Vba 如何拆分单元格中的多个值并链接到userform中的复选框
嗨,我有下面的代码,它按姓氏搜索并在文本框中返回值。我希望复选框根据第6列(f.offset(0,5))进行复选标记。但当我使用下面的代码时,它不会在第6列的单元格中拾取多个值。它只能拾取第一个。我怎样才能解决这个问题Vba 如何拆分单元格中的多个值并链接到userform中的复选框,vba,excel,split,userform,Vba,Excel,Split,Userform,嗨,我有下面的代码,它按姓氏搜索并在文本框中返回值。我希望复选框根据第6列(f.offset(0,5))进行复选标记。但当我使用下面的代码时,它不会在第6列的单元格中拾取多个值。它只能拾取第一个。我怎样才能解决这个问题 Private Sub Search_Click() Dim Name As String Dim f As Range Dim r As Long Dim ws As Worksheet Dim s As Integer Dim FirstAddress As String D
Private Sub Search_Click()
Dim Name As String
Dim f As Range
Dim r As Long
Dim ws As Worksheet
Dim s As Integer
Dim FirstAddress As String
Dim str() As String
Name = surname.Value
With ws
Set f = Range("A:A").Find(what:=Name, LookIn:=xlValues)
If Not f Is Nothing Then
With Me
firstname.Value = f.Offset(0, 1).Value
tod.Value = f.Offset(0, 2).Value
program.Value = f.Offset(0, 3).Value
email.Value = f.Offset(0, 4).Text
officenumber.Value = f.Offset(0, 6).Text
cellnumber.Value = f.Offset(0, 7).Text
str() = Split(f.Offset(0, 5), " ")
For i = 0 To UBound(str)
Select Case UCase(Trim(str(i)))
Case "PACT": PACT.Value = True
Case "PrinceRupert": PrinceRupert.Value = True
Case "Montreal": Montreal.Value = True
Case "TET": TET.Value = True
Case "WPM": WPM.Value = True
Case "TC": TC.Value = True
Case "US": US.Value = True
Case "Other": Other.Value = True
End Select
EDIT:我使用此代码将名称添加到第6列
编辑2:
这是我在上面运行debug.print allcheck将名称添加到第6列时的显示方式
PACT PrinceRupert
PACT PrinceRupert Montreal
PACT PrinceRupert Montreal WPM
PACT PrinceRupert Montreal WPM TC
PACT PrinceRupert Montreal WPM TC TET
PACT PrinceRupert Montreal WPM TC TET US
PACT PrinceRupert Montreal WPM TC TET US Other
编辑3:您正在对大写值运行select,但单个大小写项目是混合大小写的。“PRINCERUPERT”与“PRINCERUPERT”不匹配 不要将
选择的项大写,或者将所有项的大小写改为大写
编辑-如果它仍然不起作用,那么您需要检查输入到中的内容,选择
。添加下面显示的行并查看它产生的内容(将显示在即时窗格中)
i=0到UBound(str)的
所以我拿出了Ucase,只写了Trim(str(i)),但它仍然不工作,我不明白为什么它不工作?是因为当我修剪它的时候,它就变成了PactPrincerRupertMontRealet吗?这就是为什么它不起作用的原因吗?但我也做了没有修剪功能,但它仍然没有选择up@user1765813-单元格中的项目是否真的用空格分隔,或者您是否使用了其他字符?PactPrincerPertMontRealWPMTCTU这将显示在即时窗格中。上面的列表甚至不是完整的列表-它被删掉了。它应该是pactPrincerPertMontRealWPMTCtetusOther,它们之间用“”分隔,因此您的列表似乎不会用空格分隔。您可以发布填充该单元格的代码吗?更新/修复问题似乎部分与您的值未正确删除空格有关。
PACT PrinceRupert
PACT PrinceRupert Montreal
PACT PrinceRupert Montreal WPM
PACT PrinceRupert Montreal WPM TC
PACT PrinceRupert Montreal WPM TC TET
PACT PrinceRupert Montreal WPM TC TET US
PACT PrinceRupert Montreal WPM TC TET US Other
For i = 0 To UBound(str)
Debug.Print Trim(str(i)) '<< add this
Select Case UCase(Trim(str(i)))