2015-01-13 75 views
3

我有一個帶有listbox的表單,它動態地提供了當前工作簿(下面的代碼)中工作表的列表。我希望採用選定的工作表,並在稍後的公式中參考它。從幾個小時玩耍我似乎無法完成這一點。我相信我在某個地方讀過,你不能將字符串帶回到sub,並用它來引用一個對象。所以我想也許我可以創建兩個列表框VBA listbox按索引選擇工作表

  1. 爲表名稱
  2. 板材指數

,我可以索引號傳給也許使用我的公式來查找從項目正確的表格。

對於我的生活,我似乎無法找到連接兩者的方式,因爲這些項目總是在變化;代碼將由多個運營商在多個工作簿上運行,因此佈局很可能會在用戶之間發生變化。我可以很容易地添加索引#的第二個列表框,但是我有一個關於如何將名稱與用戶關聯的名稱以及可以傳回給子表的索引。我意識到列表框中的「點擊」過程將兩者關聯起來,但是與字段的動態特性無關,因此我無法想出將其用於代碼的邏輯。

For N = 1 To ActiveWorkbook.Sheets.Count 
    With ListBox1 
     .AddItem ActiveWorkbook.Sheets(N).Name 
    End With 
Next N 
+0

您可以參考表中使用的名稱,以及指標。你想通過獲取所選項目的字符串來完成什麼?即'Msgbox(工作表(selectedItemFromList).Name)' – shahkalpesh

+0

我想我可以將它添加到公式中以引用工作表(其中xxxxxxxx表示從列表框中選擇): 單元格(1,1).FormulaR1C1 =「= VLOOKUP(R7C5,&xxxxxxx&「!R1C1:R65000C8,2,FALSE)」 我應該提到我將選中的表格傳遞給sub中的變量類型:string。 – Mark

+0

您正在使用字符串構建公式。所以,我不知道爲什麼這不起作用? – shahkalpesh

回答

3

試試看。

在UserForm的代碼上面聲明一個公共變量,使其在任何模塊或代碼的整個工作簿中都可用。

Public listChoice As String 

使用您的代碼獲取ListBox行源的圖紙名稱。

Private Sub UserForm_Activate() 

    For n = 1 To ActiveWorkbook.Sheets.count 
     With ListBox1 
      .AddItem ActiveWorkbook.Sheets(n).name 
     End With 
    Next n 

End Sub 

包括爲ListBox

Private Sub ListBox1_AfterUpdate() 

    listChoice = ListBox1.Text 

End Sub 

我包括一個測試只是爲了證明結果仍然保留更新事件。你不需要這個,它會在屏幕截圖上演示結果。

Private Sub cmdTestChoice_Click() 

    MsgBox ("The choice made on the ListBox was: " & listChoice) 

End Sub 

編輯:以後要訪問表,您可以使用像這樣稱呼它:

的不同方式的一些例子接入小區,使用.Range,或.Cells,用數字或字母。

使用lRow & lCol as Long來設置行號和列號。

Sheets(listChoice).Cells(lRow, lCol).Value = TextBox1.Value 'Set cell on sheet from TextBox 
TextBox2.Value = Sheets(listChoice).Range("A2").Value  'Set TextBox From Cell on Sheet 
'Set a cell on another sheet using the selected sheet as a source. 
Sheets("AnotherSheet").Cells(lRow, "D") = Sheets(listChoice).Range("D2") 

Screenshot

+2

是的,我恰好有一張名爲斯坦的表,沒有大吶喊。 – peege

+0

非常感謝。我有一個非常類似的設置。現在,當我帶回公共變量,在這種情況下「listchoice」。我怎樣才能讓VBA使用它作爲工作場所?在這一點上,用戶想要查找駐留在工作表[listchoice]上的數據。 – Mark

+0

請參閱修訂後的答案以獲取在工作表聲明中使用變量設置值的一些示例。使用'Sheets(「sheetName」)',表單名稱的預期類型是一個字符串,所以它很合適。 – peege