2017-01-23 37 views
2

我使用下面的代碼將項目從ListBox添加到Sheet1。一切正常,但我點擊「添加」後,工作表不刷新。只有當我關閉表單時纔會看到更改(添加的行)。從列表框中寫入後刷新工作表

Private Sub btnAdd_Click() 

    Application.DisplayAlerts = False 
    Application.ScreenUpdating = False 

    Dim wbc As Workbook 
    Dim wsc As Worksheet 

    Set wbc = ActiveWorkbook 
    Set wsc = wbc.Worksheets("Sheet1") 

    Dim addme As Range 
    Dim x, y As Integer 

    Set addme = Application.Selection 

    For x = 0 To Me.lbsourceList.ListCount - 1 
     If Me.lbsourceList.Selected(x) Then 

      addme.Offset(1).EntireRow.Insert    

      wsc.Range(Cells(addme.Row, "C"), Cells(addme.Row, "C")).Offset(1).Value = Me.lbsourceList.List(x, 0) 
      wsc.Range(Cells(addme.Row, "I"), Cells(addme.Row, "I")).Offset(1).Value = Me.lbsourceList.List(x, 1) 

      Set addme = addme.Offset(1, 0) 

     End If 
    Next x 

    For y = 0 To Me.lbsourceList.ListCount - 1 
     If Me.lbsourceList.Selected(y) Then Me.lbsourceList.Selected(y) = False 
    Next y 

End Sub 

代碼運行後工作表是否可以更新/刷新?

+0

你可以試試'Workbooks(「your_wb_name」)。RefreshAll' – Wujaszkun

回答

2

即使表單打開並執行某些操作,工作表也應該更新。請參閱下面的小例子(用Userform,一個Listbox和一個CommandButton):

Option Explicit 

Private Sub CommandButton1_Click() 

    Dim lngCounter As Long 
    Dim ws As Worksheet 

    Set ws = ThisWorkbook.Worksheets("Sheet1") 

    For lngCounter = 0 To Me.ListBox1.ListCount - 1 
     ws.Cells(lngCounter + 1, 1).Value = Me.ListBox1.List(lngCounter, 0) 
    Next lngCounter 

End Sub 

Private Sub UserForm_Initialize() 

    Me.ListBox1.AddItem "foo" 
    Me.ListBox1.AddItem "bar" 
    Me.ListBox1.AddItem "baz" 

End Sub 

截圖:

enter image description here

在你的代碼,當您打開ScreenUpdating回目前尚不清楚 - 所以這是要注意的事情。

+0

謝謝你的建議羅賓 – 4est