Excel 如何更新列表框中的选定行?
你好,我正在尝试开发一个用户表单,这是我第一次 我的组合框和列表框有问题(功能不太好) 你看,我在列表框的正上方有一个组合框,在那里我会选择一个值,行值应该同时显示在列表框和组合框上 问题1:值仅显示在组合框中,而不显示在列表框中 如果单击“查看数据”按钮,电子表格中的所有值都会显示在列表框中,共有8列。如果单击列表框中的某一行(显然它会高亮显示),它也会显示在下面的组合框中 问题2:每当我试图编辑组合框中的值并单击“更新”按钮时,什么都不会发生。它不会更新任何内容 我到处都在寻找答案,但似乎找不到答案Excel 如何更新列表框中的选定行?,excel,vba,userform,Excel,Vba,Userform,你好,我正在尝试开发一个用户表单,这是我第一次 我的组合框和列表框有问题(功能不太好) 你看,我在列表框的正上方有一个组合框,在那里我会选择一个值,行值应该同时显示在列表框和组合框上 问题1:值仅显示在组合框中,而不显示在列表框中 如果单击“查看数据”按钮,电子表格中的所有值都会显示在列表框中,共有8列。如果单击列表框中的某一行(显然它会高亮显示),它也会显示在下面的组合框中 问题2:每当我试图编辑组合框中的值并单击“更新”按钮时,什么都不会发生。它不会更新任何内容 我到处都在寻找答案,但似乎
Private Sub btnDelete_Click()
Dim a As Integer
If MsgBox("Are you sure you want to delete this row?", vbYesNo + vbQuestion, "Yes") = vbYes Then
For a = 1 To Range("A100000").End(xlUp).Row
If Cells(a, 1) = listHeader.List(listHeader.ListIndex) Then
Rows(a).Select
Selection.Delete
End If
Next a
End If
End Sub
Private Sub btnSearch_Click()
'IM THINKING ABOUT REMOVING THE SEARCH BUTTON BECAUSE THE COMBOBOX ITSELF CAN BE USED FOR SEARCHING THE ROW
'IT MAKES THE SEARCH BUTTON USELESS
'Dim x As Long
'Dim y As Long
'x = Sheets("PRESTAGE DB").Range("A" & Rows.Count).End(xlUp).Row
'For y = 2 To x
'If Sheets("PRESTAGE DB").Cells(y, 1).Text = cmbSearch.Value Then
'cmbSchema.Text = Sheets("PRESTAGE DB").Cells(y, 1)
'cmbEnvironment.Text = Sheets("PRESTAGE DB").Cells(y, 2)
'cmbHost.Text = Sheets("PRESTAGE DB").Cells(y, 3)
'cmbIP.Text = Sheets("PRESTAGE DB").Cells(y, 4)
'cmbAccessible.Text = Sheets("PRESTAGE DB").Cells(y, 5)
'cmbLast.Text = Sheets("PRESTAGE DB").Cells(y, 6)
'cmbConfirmation.Text = Sheets("PRESTAGE DB").Cells(y, 7)
'cmbProjects.Text = Sheets("PRESTAGE DB").Cells(y, 8)
'End If
'Next y
End Sub
Private Sub btnView_Click()
listHeader.RowSource = "A4:H200"
End Sub
Private Sub cmbAdd_Click()
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Sheets("PRESTAGE DB")
nextrow = sheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
sheet.Cells(nextrow, 1) = Me.cmbSchema
sheet.Cells(nextrow, 2) = Me.cmbEnvironment
sheet.Cells(nextrow, 3) = Me.cmbHost
sheet.Cells(nextrow, 4) = Me.cmbIP
sheet.Cells(nextrow, 5) = Me.cmbAccessible
sheet.Cells(nextrow, 6) = Me.cmbLast
sheet.Cells(nextrow, 7) = Me.cmbConfirmation
sheet.Cells(nextrow, 8) = Me.cmbProjects
MsgBox "Data Added!"
End Sub
Private Sub cmbClearFields_Click()
cmbSchema.Text = ""
cmbEnvironment.Text = ""
cmbHost.Text = ""
cmbIP.Text = ""
cmbAccessible.Text = ""
cmbLast.Text = ""
cmbConfirmation.Text = ""
cmbProjects.Text = ""
cmbSearch.Text = ""
End Sub
Private Sub cmbSearch_Change()
Dim x As Long
Dim y As Long
x = Sheets("PRESTAGE DB").Range("A" & Rows.Count).End(xlUp).Row
For y = 2 To x
If Sheets("PRESTAGE DB").Cells(y, 1).Text = cmbSearch.Value Then
cmbSchema.Text = Sheets("PRESTAGE DB").Cells(y, 1)
cmbEnvironment.Text = Sheets("PRESTAGE DB").Cells(y, 2)
cmbHost.Text = Sheets("PRESTAGE DB").Cells(y, 3)
cmbIP.Text = Sheets("PRESTAGE DB").Cells(y, 4)
cmbAccessible.Text = Sheets("PRESTAGE DB").Cells(y, 5)
cmbLast.Text = Sheets("PRESTAGE DB").Cells(y, 6)
cmbConfirmation.Text = Sheets("PRESTAGE DB").Cells(y, 7)
cmbProjects.Text = Sheets("PRESTAGE DB").Cells(y, 8)
End If
Next y
End Sub
Private Sub cmbUpdate_Click()
Dim x As Long
Dim y As Long
x = Sheets("PRESTAGE DB").Range("A" & Rows.Count).End(xlUp).Row
For y = 2 To x
If Sheets("PRESTAGE DB").Cells(y, 1).Text = cmbSchema.Value Then
Sheets("PRESTAGE DB").Cells(y, 2) = cmbEnvironment
Sheets("PRESTAGE DB").Cells(y, 3) = cmbHost
Sheets("PRESTAGE DB").Cells(y, 4) = cmbIP
Sheets("PRESTAGE DB").Cells(y, 5) = cmbAccessible
Sheets("PRESTAGE DB").Cells(y, 6) = cmbLast
Sheets("PRESTAGE DB").Cells(y, 7) = cmbConfirmation
Sheets("PRESTAGE DB").Cells(y, 8) = cmbProjects
End If
Next y
End Sub
Private Sub CommandButton5_Click()
listHeader.RowSource = ""
End Sub
Private Sub CommandButton7_Click()
End Sub
Private Sub listHeader_Click()
cmbSchema.Value = UserForm1.listHeader.Column(0)
cmbEnvironment.Value = UserForm1.listHeader.Column(1)
cmbHost.Value = UserForm1.listHeader.Column(2)
cmbIP.Value = UserForm1.listHeader.Column(3)
cmbAccessible.Value = UserForm1.listHeader.Column(4)
cmbLast.Value = UserForm1.listHeader.Column(5)
cmbConfirmation.Value = UserForm1.listHeader.Column(6)
cmbProjects.Value = UserForm1.listHeader.Column(7)
End Sub
Private Sub UserForm_Initialize()
cmbSearch.List = Sheets("PRESTAGE DB").Range("A4:A10000").Value
End Sub
文件:对问题1使用以下代码 用于组合框的更改事件,因此如果用户更改任何值,列表框和组合框将根据组合框中选择的值填充
Private Sub ComboBox1_Change()
x = Sheets("PRESTAGEDB").Range("A" & Rows.Count).End(xlUp).Row
For y = 2 To x
If Sheets("PRESTAGEDB").Cells(y, 1).Text = ComboBox1.Value Then
cmbSchema.Text = Sheets("PRESTAGEDB").Cells(y, 1)
cmbEnvironment.Text = Sheets("PRESTAGEDB").Cells(y, 2)
cmbHost.Text = Sheets("PRESTAGEDB").Cells(y, 3)
cmbIP.Text = Sheets("PRESTAGEDB").Cells(y, 4)
cmbAccessible.Text = Sheets("PRESTAGEDB").Cells(y, 5)
cmbLast.Text = Sheets("PRESTAGEDB").Cells(y, 6)
cmbConfirmation.Text = Sheets("PRESTAGEDB").Cells(y, 7)
cmbProjects.Text = Sheets("PRESTAGEDB").Cells(y, 8)
UserForm1.ListBox1.RowSource = "A" + CStr(y) + ": H" + CStr(y)
Exit For
End If
Next y
End Sub
如果问题2已解决,请接受 使用.Value从字段中获取值,然后将该值设置为电子表格->CMB环境.Value
Private Sub cmbUpdate_Click()
Dim x As Long
Dim y As Long
x = Sheets("PRESTAGEDB").Range("A" & Rows.Count).End(xlUp).Row
For y = 2 To x
If Sheets("PRESTAGEDB").Cells(y, 1).Text = cmbSchema.Value Then
Sheets("PRESTAGEDB").Cells(y, 2) = cmbEnvironment.Value
Sheets("PRESTAGEDB").Cells(y, 3) = cmbHost.Value
Sheets("PRESTAGEDB").Cells(y, 4) = cmbIP.Value
Sheets("PRESTAGEDB").Cells(y, 5) = cmbAccessible.Value
Sheets("PRESTAGEDB").Cells(y, 6) = cmbLast.Value
Sheets("PRESTAGEDB").Cells(y, 7) = cmbConfirmation.Value
Sheets("PRESTAGEDB").Cells(y, 8) = cmbProjects.Value
Exit For
End If
Next y
End Sub
当我更改组合框中的值时,它将被设置为单元格中的更新值。如果不起作用,请调试代码并共享详细信息。您能共享excel文件吗?您好,0m3r,我添加了文件链接谢谢您好,非常感谢!!!第一个问题解决了!!然而,问题2还不起作用。当我点击更新BTN时,什么也没有发生。但是非常感谢你的第一个问题tho!!你太棒了!通过接受并更新有用的答案来表达您的感激之情:)您好,我更新了它,但stackoverflow提示“感谢您的反馈!记录了声誉低于15的人的投票,但不要更改公开显示的帖子分数。”您好,我不知道我是否正确,但我复制了您的代码,但仍然没有发生任何事情。我的原始代码是CMB环境,所以我添加了。最终实现了价值,但没有任何东西仍然有效。我遗漏了什么?我没有任何错误。每当我试图更新组合框中的值时,列表/电子表格中的值仍然没有更新。它只是返回到它自己的值。尝试单击“查看数据”按钮,电子表格中的所有详细信息都会显示出来。我试图做的是,我将单击列表框中的一行,将值编辑到组合框中,并使用更新按钮保存它。但是,它不起作用。我还在想办法。我感谢你的帮助,文卡特什。非常感谢!我已经更改了工作表名称,所以请使用原始代码和append.Value。表格(“预段数据库”)。单元格(y,2)添加监视,并检查在执行相应代码时值是否更改。ohhh我现在看到问题了。它仅适用于CMBA环境列,而不适用于任何其他列。我在“项目”组合框上键入,但它不起作用。