QQ登录

只需一步,快速开始

查看: 15448|回复: 19
收起左侧

ait +a +a 水平间距对齐...... corelvba

[复制链接]
累计签到:47 天
连续签到:0 天
发表于 2017-9-13 21:58:48 | 显示全部楼层 |阅读模式
Dim arr() As Double
Sub 水平间距对齐()'其实就是 AIt +a +a ......
Dim s As Shape, news As New ShapeRange, i As Integer, max1 As Double, min1 As Double, k As Integer, k1 As Integer
If ActiveSelection.Shapes.Count > 2 Then '大于2才运行下面代码
ActiveDocument.Unit = CDRMillimeter
i = -1
ReDim arr(0 To ActiveSelectionRange.Shapes.Count - 1, 4)
For Each s In ActiveSelectionRange.Shapes
i = i + 1
arr(i, 0) = s.LeftX
arr(i, 1) = s.BottomY
arr(i, 2) = i
s.GetSize arr(i, 3), arr(i, 4)
news.Add s
Next
shuzupaixu arr '数组排序
max1 = max() '获取最大x坐标
min1 = min() '获取最小x坐标
spac1 = spac(max1, min1) '获取间距
spacfirst = max1 - min1
For i = 1 To UBound(arr()) - 1
k = arr(i, 2) + 1
k1 = arr(i - 1, 2) + 1
news.Shapes(k).LeftX = news.Shapes(k1).LeftX + arr(i - 1, 3) + spac1
Next
End If
End Sub
Function shuzupaixu(arr() As Double) '数组排序
For i = 1 To UBound(arr())
        For j = i + 1 To UBound(arr()) + 1
        d1 = arr(i - 1, 0)
        d2 = arr(j - 1, 0)

            If d1 > d2 Then
                t = arr(j - 1, 0) 's的leftx
                t1 = arr(j - 1, 1) 's的bottomy
                t2 = arr(j - 1, 2) 's的index
                t3 = arr(j - 1, 3) 's的width
                t4 = arr(j - 1, 4) 's的height
                arr(j - 1, 0) = arr(i - 1, 0)
                arr(j - 1, 1) = arr(i - 1, 1)
                arr(j - 1, 2) = arr(i - 1, 2)
                arr(j - 1, 3) = arr(i - 1, 3)
                arr(j - 1, 4) = arr(i - 1, 4)
                arr(i - 1, 0) = t
                arr(i - 1, 1) = t1
                arr(i - 1, 2) = t2
                arr(i - 1, 3) = t3
                arr(i - 1, 4) = t4
            End If
        Next j
    Next i
End Function
Function spac(max1 As Double, min1 As Double) '获取间距
spac = max1 - min1 - arr(0, 3)
For i = 1 To UBound(arr()) - 1
spac = spac - arr(i, 3)
Next
spac = spac / UBound(arr())
End Function
Function max() As Double '获取最大值 其实就是第一个
x = arr(0, 0)
For i = 1 To UBound(arr())
y = arr(i, 0)
max = IIf(x > y, x, y)
Next
End Function
Function min() As Double '获取最小值 其实就是第二个
x = arr(0, 0)
For i = 1 To UBound(arr())
y = arr(i, 0)
min = IIf(x < y, x, y)
Next
End Function


华印网相关搜索

累计签到:628 天
连续签到:15 天
发表于 2017-9-13 23:25:02 | 显示全部楼层
感谢柯南为我们揭示corelvba的真相
回复 支持 反对 送花

使用道具 举报

尚未签到

发表于 2017-9-13 23:32:59 | 显示全部楼层
对vb的函数掌握得比较熟悉了
回复 支持 反对 送花

使用道具 举报

累计签到:297 天
连续签到:1 天
发表于 2017-9-14 01:21:14 | 显示全部楼层
好复杂啊`感谢对论坛的支持
回复 支持 反对 送花

使用道具 举报

累计签到:892 天
连续签到:4 天
发表于 2017-9-14 08:15:27 | 显示全部楼层
简直是高手,对编程这么熟
回复 支持 反对 送花

使用道具 举报

累计签到:348 天
连续签到:1 天
发表于 2017-9-14 09:25:59 | 显示全部楼层
厉害了,要是我会编程工作起来也能简化很多流程
回复 支持 反对 送花

使用道具 举报

累计签到:383 天
连续签到:1 天
发表于 2017-9-14 10:47:28 | 显示全部楼层
楼主什么时候出一个垂直代码!!!!
回复 支持 反对 送花

使用道具 举报

累计签到:205 天
连续签到:1 天
发表于 2017-9-14 12:03:55 | 显示全部楼层
楼主能否帮我写串代码?目的是当CorelDRAW软件启动时,自动删除D盘目录中的一个文件或文件夹?
回复 支持 反对 送花

使用道具 举报

累计签到:844 天
连续签到:170 天
发表于 2017-9-23 22:42:12 | 显示全部楼层
没教程只有代码,菜鸟真心看不会啊
回复 支持 反对 送花

使用道具 举报

累计签到:192 天
连续签到:1 天
发表于 2017-9-24 00:16:40 | 显示全部楼层
太高深了,菜鸟表示不懂
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

注意注意注意:必看上一条 /1 下一条

华印网 - 华印社区
Share More 周一至周日:09:00 - 21:00
华印网旗下的设计印刷制作类专业技术站点
请勿发布违反国家法律法规的内容,会员观点不代表本站立场
企鹅群号:119572101

华印网汇集印前印后技术、PDF拼版、防伪包装、数码印刷、合版印刷、图文设计、平面设计、数码印刷及CTP等最新印刷技术,提供软件汉化、插件汉化、cdr插件、ai插件、ps插件、pdf插件、印刷流程、ctp输出、印刷软件、印能捷、esko、CorelDRAW、InDesign、Illustrator、CTP、CDR以及PDF软件下载的综合性印刷论坛社区!

Powered by Discuz! X3.4 © 2001-2021,Tencent Cloud.

站点地图|小黑屋|手机版|Archiver|华印 ( 粤ICP备19020152号-1 )

GMT+8, 2024-12-21 19:09 , Processed in 0.077979 second(s), 36 queries , Gzip On, Yac On.

快速回复 返回顶部 返回列表