从Excel VBA中的string中删除额外的逗号

我想从三个不同的下拉列表中插入数据到我的电子表格中,但是我遇到了一些困难。 有三个下拉菜单叫做cbo_fac1,cbo_fac2和cbo_fac3。


这里是用例:

使用案例1 – 将No preference结果插入到电子表格中

 cbo_fac1 - No preference cbo_fac2 - No preference cbo_fac3 - No preference 

用例2a – 将结果插入到电子表格中。 应该是value

 cbo_fac1 - Value cbo_fac2 - No preference cbo_fac3 - No preference 

用例2b – 将结果插入到电子表格中。 应该是value

 cbo_fac1 - No preference cbo_fac2 - Value cbo_fac3 - No preference 

用例2c – 将结果插入到电子表格中。 应该是value

 cbo_fac1 - No preference cbo_fac2 - No preference cbo_fac3 - Value 

用例3a – 将value, value,插入到电子表格中。 应该是value, value

 cbo_fac1 - Value cbo_fac2 - Value cbo_fac3 - No preference 

用例3b – 将结果, value, value插入到电子表格中。 应该是value, value

 cbo_fac1 - No preference cbo_fac2 - Value cbo_fac3 - Value 

用例3c – 将结果插入到电子表格中。 应该是value, value

 cbo_fac1 - Value cbo_fac2 - No preference cbo_fac3 - Value 

如何删除用例2a-3c中的额外逗号?

这是我的代码到目前为止:

 If Me.cbo_fac1 <> "No preference" Then cbo_fac1Entry = Me.cbo_fac1.Value Else cbo_fac1Entry = "" End If If Me.cbo_fac2 <> "No preference" Then cbo_fac2Entry = Me.cbo_fac2.Value Else cbo_fac2Entry = "" End If If Me.cbo_fac3 <> "No preference" Then cbo_fac3Entry = Me.cbo_fac3.Value Else cbo_fac3Entry = "" End If cbo_facEntry = cbo_fac1Entry & ", " & cbo_fac2Entry & ", " & cbo_fac3Entry If cbo_facEntry = " , ," Then cbo_facEntry = "No preference" Else End If rng1.Offset(1, 15) = cbo_facEntry 

我试过插入这段代码:

 if right(cbo_facEntry,1)="," then cbo_facEntry= left(len(cbo_facEntry)-1) end if if left(cbo_facEntry,1)="," then cbo_facEntry= right(len(cbo_facEntry)-1) end if 

后:

 If cbo_facEntry = ",," Then cbo_facEntry = "No Preference" Else End If 

但是它并没有太大的区别,因为它不能满足所有用例的要求,并且返回一个无效的语法错误信息。


提前致谢!

您可以将这三行添加到您的代码中,而不是您已经尝试的代码:

 cbo_facEntry = Replace(cbo_facEntry, ", , ", ", ") If Left(cbo_facEntry, 1) = "," Then cbo_facEntry = Right(cbo_facEntry, Len(cbo_facEntry) - 2) If Right(cbo_facEntry, 2) = ", " Then cbo_facEntry = Left(cbo_facEntry, Len(cbo_facEntry) - 2) 

这里是一个简单的片段:

 Dim a(2) As String a[0] = cbo_fac1 a[1] = cbo_fac2 a[2] = cbo_fac3 Dim I As Integer, result As String For I = 0 To UBound(a) If a(I) <> "No Preference" Then If I = 0 Then result = a(I) Else result = result & "," & a(I) End If End If Next 

我没有testing这个代码,但你应该明白了。