遍历集合的成员,如何获取成员的密钥?

Shodan

因此,我必须将一堆微调器对象移到一组单元格的旁边。

对于每个微调器,我需要运行以下语句

Worksheets("Serial").spnAspect.Left = Worksheets("Serial").Range("I12").Left - Worksheets("Serial").spnAspect.Width
Worksheets("Serial").spnAspect.Top = Worksheets("Serial").Range("I12").Top + Worksheets("Serial").Range("I12").Height / 2 _
                                        - Worksheets("Serial").spnAspect.Height / 2

所以我想使它更整洁,所以我做了以下内容。我在这里遇到的唯一问题是如何告诉它将每个微调器与哪个单元对齐。这是“ I12”,在每次迭代中都应该是集合中thisControl的键。

Sub MoveSpinners()

    Dim myControls As New Collection
    Dim thisControl As Object
    Dim mySheet As Worksheet

    myControls.Add Worksheets("Serial").spnHeight, "I11"
    myControls.Add Worksheets("Serial").spnAspect, "I12"
    myControls.Add Worksheets("Serial").spnCropleft, "I13"
    myControls.Add Worksheets("Serial").spnCropRight, "I14"
    myControls.Add Worksheets("Serial").spnCropTop, "I15"
    myControls.Add Worksheets("Serial").spnCropBottom, "I16"

    Set mySheet = Worksheets("Serial")

    For Each thisControl In myControls

        thisControl.Left = mySheet.Range("I12").Left - thisControl.Width
        thisControl.Top = mySheet.Range("I12").Top + thisControl.Height / 2 _
                                        - thisControl.Height / 2
    Next

End Sub

这是与在Collection对象上获取项目的键相同的问题,在这种情况下,该问题通过“使用字典对象代替”来回答,但在我的情况下,它不起作用,因为它不像粘贴粘贴那样整洁同一行很多次

我正在考虑的其他替代方法是fMoveSpinner(thisSpinner作为对象,myDestination作为范围),但是我希望保持这个小的MoveSpinner子例程独立。

如果您有更好的主意,我将很高兴听到它!

用户名

我将您的代码重构为使用脚本字典。对我来说看起来很整洁!

脚本字典的键和项都可以是对象。在这里,我将控件存储为键,将范围存储为项。这样,当您访问按键控件时,您可以轻松获取项目范围作为参考。

之前和之后

在此处输入图片说明

代码

Sub MoveSpinners2()

    Dim myControls As Object
    Dim thisControl As Object
    Dim mySheet As Worksheet
    Dim x As Long

    Set myControls = CreateObject("Scripting.Dictionary")

    With Worksheets("Serial")

        myControls.Add .spnHeight, .Range("I11")
        myControls.Add .spnAspect, .Range("I12")
        myControls.Add .spnCropleft, .Range("I13")
        myControls.Add .spnCropRight, .Range("I14")
        myControls.Add .spnCropTop, .Range("I15")
        myControls.Add .spnCropBottom, .Range("I16")

    End With

    For Each thisControl In myControls

        thisControl.Left = myControls(thisControl).Left - thisControl.Width
        thisControl.Top = myControls(thisControl).Top + thisControl.Height / 2 _
                          - thisControl.Height / 2
    Next

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

遍历集合的成员,如何获取成员的密钥?

来自分类Dev

如何获取成员扩展或实现另一个成员的传递集合<泛型类型>的子集合?

来自分类Dev

使用“成员”获取集合中的元素

来自分类Dev

Redis + Node.js-遍历集合成员

来自分类Dev

如何深度复制强类型集合的成员

来自分类Dev

如何获得集合成员所属的模型

来自分类Dev

遍历成员函数的结果

来自分类Dev

遍历基类成员

来自分类Dev

如何从课程文件中获取课程成员

来自分类Dev

如何从TypeInfo获取声明和继承的成员

来自分类Dev

如何从接口{}获取结构成员的指针

来自分类Dev

如何获取成员函数的地址指针

来自分类Dev

C ++如何获取位域成员的大小?

来自分类Dev

如何获取类成员的类型注释?

来自分类Dev

如何获取枚举成员的分配值?

来自分类Dev

HLSL Reflection-如何获取tbuffer的成员?

来自分类Dev

如何获取属于特定组的成员列表

来自分类Dev

如何从字典中获取对象成员的值

来自分类Dev

如何尽快获取 Outlook DistributionList 的成员?

来自分类Dev

如果用户是组列表的成员,如何遍历用户的组成员身份并返回用户

来自分类Dev

C#:如何遍历通过类中的数组定义的成员

来自分类Dev

如何扩展不可变集合并添加字段成员?

来自分类Dev

使用JSON Merge Patch,如何引用子集合的成员?

来自分类Dev

遍历案例类数据成员

来自分类Dev

Redis - 更新集合成员

来自分类Dev

比较多个集合的基数并从最大集合的成员中获取特定值

来自分类Dev

从结构中获取成员

来自分类Dev

libclang获取成员声明

来自分类Dev

获取原始班级的成员