2015-10-24 170 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