2015-02-12 90 views
0

執着後我有,我從外部工作簿填充用戶窗體列表框。如果我保持源電子表格打開列表框可以正確顯示。當我關閉外部工作簿時,列表框似乎不再正確顯示,並且如果滾動列表框,文本將被一堆非打印字符替換。Excel的VBA保持列表框從工作簿SOURSE關閉

我啓動用戶的形式和當用戶選擇一個複選框用戶窗體被消耗以顯示附加字段。

Private Sub chkRepaceFromList_Click() 
    Dim sFileLocation As String 
    'When checkbox is checked, add replace from list option 
    If chkRepaceFromList = True Then 
     Me.Width = 400 
     sFileLocation = "C:\My File.xlsx" 
     'Populate listbox with items in replace from list spreadsheet 
     Call UpdateReplaceList 
    Else 
     Me.Width = 160 
    End If 
End Sub 

UpdateReplaceList填充列表框與項目 「C:\我的File.xlsx」

Sub UpdateReplaceList() 
    Dim sFileLocation As String 
    Dim wbList As Workbook 
    sFileLocation = "C:\My File.xlsx" 
    Set wbList = Workbooks.Open(sFileLocation) 
    wbList.Worksheets("Sheet1").Range("A10").Select 
    Range("A10", Selection.End(xlDown).Offset(0, 1)).Select ' Select all data 
    With lstReplaceListListBox 
     .ColumnCount = 2 
     .ColumnWidths = "100;100" 
     '.RowSource = wbList.Range("A1:C20").Address 
     .RowSource = Selection.Address 
     '.RowSource = vList 
    End With 
    wbList.Close 
End Sub 

我寧願不保持 「C:\我的File.xlsx」 打開比需要的不再如果我不關閉它,chkRepaceFromList_Click()事件就會被觸發,它會嘗試打開已經打開的文件。

我現在用的子UpdateReplaceList,因爲我需要使用相同的代碼當按下某些其他按鈕。

任何建議,將不勝感激。

回答

0

回合的指出,如果你聲明一個未分配的數組。

Dim vList() As Variant 

當數據被分配

vList = Selection 'copy data from workbook to memory as an array 

然後,你可以指定數組列表框,它變爲分配。

With lstReplaceListListBox 
     .ColumnCount = 2 
     .ColumnWidths = "100;100" 
     .list = vList 'Copy array to listbox 
    End With 

而且,當源工作簿關閉時,這會在列表框中保持不變。

相關問題