2016-05-12 96 views
1

我的翻译代码不工作,因为我想...它应该只在单元格的第一个单词中执行Propercase,但它在单元格中的所有单词中执行propercase 。VBA propercase在语言翻译代码修复

任何想法如何使它翻译,并只使用activecase的第一个词的propercase?

下面是代码:

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

您可以应用在字典中使用正确的外壳并使用StrComp()来测试不区分大小写的对等关系 –

回答

2

就使第一个字母一个captial:

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

也可以使用With块,以节省打字:

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

完美工作(:非常感谢 – ADrex