gpt4 book ai didi

vba - 在列表框vba中找到所选项目的行#

转载 作者:行者123 更新时间:2023-12-04 21:39:00 25 4
gpt4 key购买 nike

如何在列表框中找到所选项目的行号?

现在我有一个sub将所有找到的项目输入到列表框中,见下文

Sub findnext()
Dim Name As String
Dim f As Range
Dim ws As Worksheet
Dim s As Integer
Dim findnext As Range

Set ws = ThisWorkbook.Worksheets("Master")
Name = surname.Value
ListBox1.Clear
Set f = Range("A:A").Find(what:=Name, LookIn:=xlValues)
Set findnext = f

Do
Debug.Print findnext.Address
Set findnext = Range("A:A").findnext(findnext)

ListBox1.AddItem findnext.Value
ListBox1.List(ListBox1.ListCount - 1, 1) = ws.Cells(findnext.Row, xFirstName).Value
ListBox1.List(ListBox1.ListCount - 1, 2) = ws.Cells(findnext.Row, xTitle).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = ws.Cells(findnext.Row, xProgramAreas).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = ws.Cells(findnext.Row, xEmail).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = ws.Cells(findnext.Row, xStakeholder).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = ws.Cells(findnext.Row, xofficephone).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = ws.Cells(findnext.Row, xcellphone).Value
'ListBox1.List(ListBox1.ListCount - 1, 8) = ws.Cells(findnext.Row, xFirstName).Value
Loop While findnext.Address <> f.Address

End Sub

如果用户选择列表框中的项目,那么它会将信息填充到用户窗体的文本框中
Sub ListBox1_Click()

surname.Value = ListBox1.List(ListBox1.ListIndex, 0)
firstname.Value = ListBox1.List(ListBox1.ListIndex, 1)
tod.Value = ListBox1.List(ListBox1.ListIndex, 2)
program.Value = ListBox1.List(ListBox1.ListIndex, 3)
email.Value = ListBox1.List(ListBox1.ListIndex, 4)
SetCheckBoxes ListBox1.List(ListBox1.ListIndex, 5) '<<<< added
officenumber.Value = ListBox1.List(ListBox1.ListIndex, 6)
cellnumber.Value = ListBox1.List(ListBox1.ListIndex, 7)

End Sub

我想从 ListBox1_click() 中弄清楚我如何确定列表框中所选项目的行号。一旦我弄清楚了,我将编码 update sub它将在其中找到所选项目的第 # 行,我将在文本框中重新输入信息并更新该行的信息。

当我做 find 时,我想过在隐藏的工作表中存储一行 # ..但我不知道如何链接 found的行#在 listbox 中选择的内容

希望...这是有道理的,如果不是,请告诉我!

最佳答案

我找到了解决这个问题的方法 - 我制作了一个额外的列表列来存储 row#found搜索项目时。然后我在用户窗体中创建了另一个文本框来输入行#:

因此,在 findnext()子我添加了以下行storerownumber = findnext.row并为列表框添加了另一行。 `listbox1.list(listbox1.listcount-1,8) = storerownumber

并在 listbox1_click() 内sub 我添加了以下行:rownumber.value = listbox1.list(listbox1.listindex,8)
并制作了一个新的sub update_click()并添加了以下几行:

Dim r As Long
Dim update As Range
Dim ws As Worksheet

Set ws = Worksheets("Master")
rownumber.Value = ListBox1.List(ListBox1.ListIndex, 8)
r = rownumber

ws.Cells(r, xLastName).Value = surname.Value
ws.Cells(r, xFirstName).Value = firstname.Value
ws.Cells(r, xTitle).Value = tod.Value
ws.Cells(r, xProgramAreas).Value = program.Value
ws.Cells(r, xEmail).Value = email.Value
ws.Cells(r, xStakeholder).Value = GetCheckBoxes
ws.Cells(r, xofficephone).Value = officenumber.Value
ws.Cells(r, xcellphone).Value = cellnumber.Value

end sub

它工作正常!

关于vba - 在列表框vba中找到所选项目的行#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23050647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com