2012-10-30 317 views
0

我想从三个不同的下拉列表中插入数据到我的电子表格中,但我遇到了一些困难。有三个下拉菜单叫做cbo_fac1,cbo_fac2和cbo_fac3。从Excel中删除字符串中的额外逗号VBA


这里是用例:

用例1 - 结果No preference被插入到电子表格

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

使用壳体2a - 在value, ,结果被插入到电子表格。应该只是value

cbo_fac1 - Value 
cbo_fac2 - No preference 
cbo_fac3 - No preference 

使用情况2B - 在, value,结果插入到电子表格中。应该只是value

cbo_fac1 - No preference 
cbo_fac2 - Value 
cbo_fac3 - No preference 

使用箱体2C - 在, , value结果插入到电子表格中。应该只是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结果插入到电子表格中。应该只是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 

但事实并非如此因为它不符合要求,所以会产生很大的差异所有用例的ts,并返回无效的语法错误消息。


在此先感谢!

回答

1

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

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) 
+0

我是否将它放在'If cbo_facEntry =“后面,”“然后'代码段? – methuselah

+0

@methuselah是的。 – Excellll

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 

我还没有测试此代码,但你应该明白我的意思。

+0

感谢您的回复。我应该在哪里将这些代码放在我已经有的内容中? – methuselah

+0

您可以使用此代码而不是您当前的代码(只需在我的代码中用Me.cbo_fac1,Me.cbo_fac2,Me.cbo_fac3替换cbo_fac1,cbo_fac2,cbo_fac3) – Konstant

相关问题