2015-10-24 171 views
2

我需要一个可以更改表单控件上的单元格链接的功能使用循环已存在于活动工作表上的组合框。我目前可以同出一回路实现这一如下表格组合框中的Excel VBA循环单元格链接

ActiveSheet.Shapes("Combobox 1").OLEFormat.Object.LinkedCell = Worksheets("Test").Cells(2, 2).Address 
ActiveSheet.Shapes("Combobox 2").OLEFormat.Object.LinkedCell = Worksheets("Test").Cells(2, 3).Address 
ActiveSheet.Shapes("Combobox 3").OLEFormat.Object.LinkedCell = Worksheets("Test").Cells(2, 4).Address 
ActiveSheet.Shapes("Combobox 4").OLEFormat.Object.LinkedCell = Worksheets("Test").Cells(2, 5).Address 
ActiveSheet.Shapes("Combobox 5").OLEFormat.Object.LinkedCell = Worksheets("Test").Cells(2, 6).Address 
ActiveSheet.Shapes("Combobox 6").OLEFormat.Object.LinkedCell = Worksheets("Test").Cells(2, 7).Address 
ActiveSheet.Shapes("Combobox 7").OLEFormat.Object.LinkedCell = Worksheets("Test").Cells(2, 8).Address 

所以我想用一个循环,而不是为我的每片组合框做到这一点,需要循环递增。细胞行数和。形状(“Combobox 1”)。我被困在编写循环中,因为组合框使用名称或字符串值而不是int值。

任何帮助将是非常赞赏

回答

1

使用此格式:

Dim ws1 As Worksheet, ws2 As Worksheet, i As Long, os As Long 

Set ws1 = ActiveSheet 
Set ws2 = Worksheets("Test") 

os = 1  'change i Offset as needed 

For i = 1 To 7 
    ws1.Shapes("Combobox " & i).OLEFormat.Object.LinkedCell = ws2.Cells(2, i + os).Address 
Next 
+0

这工作得很好,唯一的问题是comboboxs 1至7,我可能需要作为一个例子来链接到行8-14是否有可能将组合框和.Cell行号作为独立变量而不是相同变量? – Windmill

+0

查看编辑答案:我添加了一个新变量“os”(off set),以便您可以根据需要轻松更新它。单元格行号不能完全独立于组合框:如果您有7个复选框,则必须更新7行。唯一无关的方面是行可以有一个动态的位置,从第1行的偏移 –

+0

提供的代码将只给出范围地址'$ B $ 2'而不是'Test!$ B $ 2'。可能你会需要'ws2.Name&“!” &ws2.Cells(2,i + os).Address'。 OP询问有关行,您编辑的代码仅更改列 – Davesexcel