2016-05-12 23 views
1

Mein Übersetzungscode funktioniert nicht so, wie ich wollte ... Es sollte den Propercase nur in das erste Wort der Zelle tun, aber es tut das Richtige in allen Wörtern in der Zelle .VBA Propercase in der Sprache Übersetzung Code beheben

Irgendwelche Ideen, wie man es übersetzen lässt und nur das richtige Wort für das erste Wort in der aktiven Zelle verwendet? Hier

ist der Code:

Sub traducaobeta2() 

Dim translate As Object 'scritping.Dictionary 

Set translate = CreateObject("Scripting.Dictionary") 

translate("cadeira") = "chair" 
translate("cadeira,") = "chair" 
translate("cadeiras") = "chairs" 
translate("criado mudo") = "night stand" 
translate("criado-mudo") = "night stand" 
translate("mesa") = "table" 
translate("mesas") = "tables" 
translate("e") = "and" 
' the list goes on... 


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) 
For Each x In activecell 
x.Value = Application.Proper(x.Value) 
Next 
activecell.Offset(0, 1).Select 

End Sub 
+1

Sie könnten anwenden das richtige Gehäuse im Wörterbuch und verwenden Sie StrComp(), um die Groß-/Kleinschreibung zu überprüfen –

Antwort

2

So stellen Sie den ersten Buchstaben ein captial:

ActiveCell.value = UCase$(Left$(ActiveCell.value, 1)) & Right$(ActiveCell.value, Len(ActiveCell.value) - 1) 

könnte auch ein With Block verwenden Eingabe zu speichern:

With ActiveCell 
    .value = UCase$(Left$(.value, 1)) & Right$(.value, Len(.value) - 1) 
End With 
+0

Arbeitete perfekt (: Vielen Dank – ADrex