2012-10-30 5 views
0

Je souhaite insérer des données provenant de trois listes déroulantes différentes dans ma feuille de calcul, mais j'ai plusieurs difficultés. Il y a trois listes déroulantes nommées cbo_fac1, cbo_fac2 et cbo_fac3.Suppression des virgules supplémentaires de la chaîne dans Excel VBA


Voici les cas d'utilisation:

Cas d'utilisation 1 - Résultats en No preference étant insérées dans une feuille de calcul

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

Cas d'utilisation 2a - Résultats en value, , étant inséré dans une feuille de calcul . Devrait juste être value

cbo_fac1 - Value 
cbo_fac2 - No preference 
cbo_fac3 - No preference 

Cas d'utilisation 2b - Résultats en , value, étant insérés dans une feuille de calcul. Devrait juste être value

cbo_fac1 - No preference 
cbo_fac2 - Value 
cbo_fac3 - No preference 

Cas d'utilisation 2c - Résultats en , , value étant insérés dans une feuille de calcul. Devrait juste être value

cbo_fac1 - No preference 
cbo_fac2 - No preference 
cbo_fac3 - Value 

Cas d'utilisation 3a - Résultats en value, value, étant insérés dans une feuille de calcul. Devrait juste être value, value

cbo_fac1 - Value 
cbo_fac2 - Value 
cbo_fac3 - No preference 

Cas d'utilisation 3b - Résultats en , value, value étant insérés dans une feuille de calcul. Devrait juste être value, value

cbo_fac1 - No preference 
cbo_fac2 - Value 
cbo_fac3 - Value 

Cas d'utilisation 3c - Résultats en value, , value étant insérés dans une feuille de calcul. Devrait juste être value, value

cbo_fac1 - Value 
cbo_fac2 - No preference 
cbo_fac3 - Value  

Comment supprimer les virgules supplémentaires dans Cas d'utilisation 2a-3c?

Voici mon code à ce jour:

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 

J'ai essayé d'insérer ce code:

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 

Après:

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

Mais cela ne faire une grande différence, car il ne remplit pas les exigences ts de tous les cas d'utilisation et renvoie également un message d'erreur de syntaxe non valide.


Merci d'avance!

Répondre

1

Vous pouvez ajouter ces trois lignes à votre code au lieu de ce que vous avez essayé:

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

Dois-je le mettre après le 'Si cbo_facEntry =" ,, " Puis 'segment de code? – methuselah

+0

@methuselah Oui. – Excellll

2

ici est un simple extrait:

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 

Je ne l'ai pas testé ce code, mais vous devriez avoir l'idée.

+0

Merci pour votre réponse. Où dois-je placer ce code dans le contexte de ce que j'ai déjà? – methuselah

+0

Vous pouvez utiliser ce code à la place de votre code actuel (il suffit de remplacer cbo_fac1, cbo_fac2, cbo_fac3 dans mon code avec Me.cbo_fac1, Me.cbo_fac2, Me.cbo_fac3) – Konstant

Questions connexes