如何使用comboboxinput来select工作表复制数据到Excel VBA中

我认为这是一个简单的问题,但是因为在我挣扎之前我没有用过这种方法。 我正在尝试在Excel VBA中创build一个程序。 我在一个呼叫中心工作。 我们有许多Excel表格来logging不同scheme的呼叫。 我有一个简化这个过程的项目。 到目前为止,我已经创build了一个工作簿,它具有单独的表单来表示每个scheme。 我创build了一个用户表单来收集信息。 其中一个combobox表示呼叫是关于哪个scheme的。 来自用户窗体的input需要login到工作簿中对应于在combobox中select的scheme名称的工作表中。 我似乎不能接近这个工作。 任何build议或意见,将不胜感激!

我有的代码是:

Private Sub cmdClear_Click() Call UserForm_Initialize End Sub Private Sub cmdClose_Click() Unload Me End Sub Private Sub ComboBox1_Change() Dim ShtName As String ShtName = ComboBox1.List(ComboBox1.ListIndex) End Sub Private Sub CommandButton1_Click() Call Add_Data End Sub Private Sub Add_Data() Dim Worksheets As Range Dim ws As Worksheet Dim UserForm As Object Dim iRow As Long With Application .EnableEvents = False .ScreenUpdating = False End With Set ws = this.ComboBox1.GetItemText(this.ComboBox1.SelectedItem) 'find first empty row in database iRow = ShtName.Cells(Rows.Count, 1).End(x1up).Offset(1, 0).Row 'copy the data to the database ws.Cells(iRow, 1) = Date ws.Cells(iRow, 2) = Me.txtName.Value ws.Cells(iRow, 3) = Me.txtNumber.Value ws.Cells(iRow, 4) = ComboBox2.Value ws.Cells(iRow, 5).Value = Me.txtQuery.Value If optYes = True Then msgstr = "Yes" ElseIf optNo = True Then msgstr = "No" End If ws.Cells(iRow, 6).Value = msgstr If chkMain = True Then msgstri = "Main" ElseIf chkExec = True Then msgstr = "Exec" Else msgstri = "" End If ws.Cells(iRow, 7).Value = msgstri ws.Cells(iRow, 8).Value = Me.txtTime.Value End Sub Private Sub UserForm_Initialize() ComboBox1.Clear ComboBox1.AddItem ("Sheet2") ComboBox1.AddItem ("Sheet3") ComboBox1.AddItem ("Sheet4") ComboBox1.AddItem ("Sheet5") ComboBox1.AddItem ("Sheet6") ComboBox1.AddItem ("Sheet7") ComboBox1.AddItem ("Sheet8") ComboBox1.AddItem ("Sheet9") ComboBox1.AddItem ("Sheet10") ComboBox1.AddItem ("Sheet11") ComboBox1.AddItem ("Sheet12") ComboBox2.Clear ComboBox2.AddItem ("agent1") ComboBox2.AddItem ("agent2") ComboBox2.AddItem ("agent3") ComboBox2.AddItem ("agent4") ComboBox2.AddItem ("agent5") ComboBox2.AddItem ("agent6") ComboBox2.AddItem ("agent7") ComboBox2.AddItem ("agent8") ComboBox2.AddItem ("agent9") ComboBox2.AddItem ("agent10") txtNumber.Value = "" txtName.Value = "" txtQuery.Value = "" txtTime.Value = "" optYes = False optNo = False chkMain = False chkExec = False ComboBox1.SetFocus End Sub 

你应该得到一个错误

  Set ws = this.ComboBox1.GetItemText(this.ComboBox1.SelectedItem) 

您正尝试将对象设置为string。 尝试使用

  Set ws = Sheets(this.ComboBox1.GetItemText(this.ComboBox1.SelectedItem)) 

这实际上会给你在这个variables的ws对象。 工作表是工作簿中工作表的集合。 您可以通过索引号或纸张名称进行select。