2017-01-23 40 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