要求用户窗体的列表框选择
Requiring Listbox Selection for userform
Private Sub CommandButton1_Click()
whichSheet = ListBox1.Value
Dim n As Integer
Do
n = n + 1
ListBox1.AddItem Sheets(n).Name
Loop Until n = Worksheets.Count
Worksheets(whichSheet).Activate
Dim lastrow
lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
lastrow = lastrow + 1
Cells(lastrow, 1) = TextBox1
answer = MsgBox("Are you sure you want to add the record?", vbYesNo + vbQuestion, "Add Record")
If answer = vbYes Then
Cells(lastrow, 1) = TextBox1.Text
Cells(lastrow, 2) = TextBox2.Text
Cells(lastrow, 3) = TextBox3.Value
Cells(lastrow, 4) = TextBox4.Text
Cells(lastrow, 5) = TextBox5.Text
Cells(lastrow, 6) = TextBox6.Text
Else
Cells(lastrow, 1) = ""
Exit Sub
End If
End Sub
Private Sub UserForm_Initialize()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ListBox1.AddItem (ws.Name)
Next ws
End Sub
大家好,我正在使用上面的代码,它非常适合我的用户表单。我遇到的唯一问题是,当有人没有从 listbox1 中选择一个选项并提交信息时,"Runtime Error" window 会弹出。我想通过显示一个消息框来阻止这种情况的发生,告诉用户做出选择--->单击消息框上的确定--->然后继续。如果用户没有 select 一个选项,每次都应该执行相同的过程。如果您有任何想法,我很乐意尝试一下。谢谢
我处理这种情况的首选方法是,如果 ListBox1
中没有任何内容被选中,则禁用 CommandButton1
。或者,换句话说,在选择某些内容时启用按钮。
Private Sub UserForm_Initialize()
Dim ws As Worksheet
CommandButton1.Enabled = False ' <--- here.
For Each ws In ThisWorkbook.Worksheets
ListBox1.AddItem (ws.Name)
Next ws
End Sub
我目前没有打开 Excel,但您需要一个相应的列表框事件来 enable/disable 按钮。以下是示例,未经测试。
Private Sub ListBox1_Change()
CommandButton1.Enabled = ListBox1.ListIndex <> -1
End Sub
另一种方法是在您进入 CommandButton1_Click
例程并在那里进行处理时检查是否已选择某些内容。但我更愿意首先防止错误的用户输入 - 不那么复杂。
Private Sub CommandButton1_Click()
whichSheet = ListBox1.Value
Dim n As Integer
Do
n = n + 1
ListBox1.AddItem Sheets(n).Name
Loop Until n = Worksheets.Count
Worksheets(whichSheet).Activate
Dim lastrow
lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
lastrow = lastrow + 1
Cells(lastrow, 1) = TextBox1
answer = MsgBox("Are you sure you want to add the record?", vbYesNo + vbQuestion, "Add Record")
If answer = vbYes Then
Cells(lastrow, 1) = TextBox1.Text
Cells(lastrow, 2) = TextBox2.Text
Cells(lastrow, 3) = TextBox3.Value
Cells(lastrow, 4) = TextBox4.Text
Cells(lastrow, 5) = TextBox5.Text
Cells(lastrow, 6) = TextBox6.Text
Else
Cells(lastrow, 1) = ""
Exit Sub
End If
End Sub
Private Sub UserForm_Initialize()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ListBox1.AddItem (ws.Name)
Next ws
End Sub
大家好,我正在使用上面的代码,它非常适合我的用户表单。我遇到的唯一问题是,当有人没有从 listbox1 中选择一个选项并提交信息时,"Runtime Error" window 会弹出。我想通过显示一个消息框来阻止这种情况的发生,告诉用户做出选择--->单击消息框上的确定--->然后继续。如果用户没有 select 一个选项,每次都应该执行相同的过程。如果您有任何想法,我很乐意尝试一下。谢谢
我处理这种情况的首选方法是,如果 ListBox1
中没有任何内容被选中,则禁用 CommandButton1
。或者,换句话说,在选择某些内容时启用按钮。
Private Sub UserForm_Initialize()
Dim ws As Worksheet
CommandButton1.Enabled = False ' <--- here.
For Each ws In ThisWorkbook.Worksheets
ListBox1.AddItem (ws.Name)
Next ws
End Sub
我目前没有打开 Excel,但您需要一个相应的列表框事件来 enable/disable 按钮。以下是示例,未经测试。
Private Sub ListBox1_Change()
CommandButton1.Enabled = ListBox1.ListIndex <> -1
End Sub
另一种方法是在您进入 CommandButton1_Click
例程并在那里进行处理时检查是否已选择某些内容。但我更愿意首先防止错误的用户输入 - 不那么复杂。