
🐟️  CorelDRAW VBA代码学习:  物件间隔选择 🐠
Sub VBA物件间隔选择()
    Dim sr As ShapeRange
    Set sr = ActiveSelectionRange
    
    
    sr.Sort " @shape1.Top * 100 - @shape1.Left > @shape2.Top * 100 - @shape2.Left"
    
    Dim s As Shape
    Dim sr_new As New ShapeRange
    
    
    
    
    For Each s In sr
        If sr.IndexOf(s) Mod 2 = 1 Then 
            sr_new.Add s 
        End If
    Next s
    
    sr_new.CreateSelection
End Sub
这段代码是针对 CorelDRAW 的 VBA,下面是对代码的解析:
代码解析
声明变量:
   Dim sr As ShapeRange
   Dim s As Shape
   Dim sr_new As New ShapeRange
   sr:用来存储当前选定的形状范围。 
   s:用于遍历形状范围中的每个形状。 
   sr_new:用于存储奇数索引的形状,创建一个新的形状范围。
 
获取当前选定的形状范围:
   Set sr = ActiveSelectionRange
   ActiveSelectionRange 获取当前用户在 CorelDRAW 中选中的形状范围。
 
按方位排序:
   sr.Sort " @shape1.Top * 100 - @shape1.Left > @shape2.Top * 100 - @shape2.Left"
   - 这行代码对形状进行排序,首先按 
Top 属性(垂直位置)排序,然后按 Left 属性(水平位置)排序。这有助于确保形状在特定的顺序下排列。 
 
遍历形状并选择奇数索引的形状:
   For Each s In sr
       If sr.IndexOf(s) Mod 2 = 1 Then ' 选择奇数索引
           sr_new.Add s ' 奇数索引物件添加到 sr副本
       End If
   Next s
   - 通过 
For Each 循环遍历形状范围中的每个形状 s。 
   - 使用 
sr.IndexOf(s) Mod 2 = 1 来判断当前形状的索引是否为奇数。如果是,则将其添加到新的形状范围 sr_new。 
 
创建选择:
   sr_new.CreateSelection
   - 最后,调用 
CreateSelection 方法将包含奇数索引的形状设置为当前选定的形状。 
总体评价
- 功能性:此代码有效地选择了按指定顺序排列的奇数索引形状,适合用于需要对形状筛选和分组的场景。
 
- 可扩展性:可以进一步扩展代码,例如添加选择偶数索引形状的功能或提供不同的排序方式。
 
- 易读性:代码结构清晰,适当的注释使得每一步的目的易于理解。
 
改进建议
- 错误处理:在处理形状时,可以增加错误处理,以避免潜在的运行时错误,例如没有选中任何形状的情况。
 
- 用户交互:可以考虑添加用户界面元素,让用户选择要执行的操作,比如选择奇数或偶数索引的形状。