Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何拆分单元格中的多个值并链接到userform中的复选框_Vba_Excel_Split_Userform - Fatal编程技术网

Vba 如何拆分单元格中的多个值并链接到userform中的复选框

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

嗨,我有下面的代码,它按姓氏搜索并在文本框中返回值。我希望复选框根据第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
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)))