2016-05-18 5 views
0

Dieser Code übersetzt alle Wörter in einer Zelle, aber nur die erste sollte in den richtigen Fall gezwungen werden, die anderen Wörter sollten den Fall vom Benutzer geschrieben halten, aber stattdessen erzwingt das erste Wort den richtigen Fall und alle andere Wörter in der Zelle in Kleinbuchstaben. Alle anderen Wörter sollten den ursprünglichen Fall beibehalten.Warum ändert dieser Code die Codes in den richtigen Fall?

Sub TraAdd() 

    Dim translate As Object 'scritping.Dictionary 

    Set translate = CreateObject("Scripting.Dictionary") 

    translate("modens") = "modems" 
    translate("Modens") = "Modems" 
    translate("modens,") = "modems," 
    translate("Modens,") = "Modems," 
    translate("Fruteira,") = "Fruit bowl," 
    translate("fruteira,") = "fruit bowl," 
    translate("Fruteira") = "Fruit bowl" 
    translate("fruteira") = "fruit bowl" 
    translate("muletas") = "crutches" 
    translate("Muletas") = "Crutches" 
    translate("muletas,") = "crutches," 
    translate("Muletas,") = "Crutches," 


    Dim Words As Variant 
    Dim I As Integer 
    Words = Split(LCase(activecell.Value)) 


    For I = LBound(Words) To UBound(Words) 
     If translate(Words(I)) <> "" Then Words(I) = translate(Words(I)) 
    Next 
    activecell.Value = Join(Words) 
    activecell.Value = Ucase$(Left$(activecell.Value, 1)) & Right$(activecell.Value, Len(activecell.Value) - 1) 

End Sub 

Irgendwelche Ideen?

+1

Diese Linie alles drückt Fall zu senken: 'Wörter = Split (LCase (ActiveCell.Value))' –

+0

Soll ich es löschen oder ändern? – ADrex

+1

Es denkt, wenn Sie 'LCase' entfernen, sollte es so funktionieren, wie Sie beabsichtigen. Wie folgt: 'Words = Split (activecell.Value)' –

Antwort

2

Sie haben alle Inhalte in Kleinbuchstaben umgewandelt, wenn Sie sie in ein Array aufteilen.

LCase entfernen, wenn Sie den Zellinhalt Words aufgeteilt und es sollte funktionieren, wie Sie beabsichtigen:

Words = Split(activecell.Value)