0
我想将每个月在文本框中更改的宏设置为在对话框中输入的某个月份。
这是我写的。没有错误,但它也没有做这项工作。你能帮助找到问题吗?谢谢。VBA:在文本框中查找字符串并将它们更改为某个字符串
Sub ChangeMonth()
Dim xWs As Worksheet
Dim shp As Shape
Dim xFindStr As String
Dim xReplace As String
Dim z As Integer
Set xWs = Application.Sheets("Mail")
xReplace = Application.InputBox("Replace to :", "Replacement", "", Type:=2)
'On Error Resume Next
For Each shp In xWs.Shapes
xValue = shp.TextFrame.Characters.Text
For x = 1 To 12
shp.TextFrame.Characters.Text = VBA.Replace(xValue, MonthName(x), "xxxx")
Next x
shp.TextFrame.Characters.Text = VBA.Replace(xValue, "xxxx", xReplace)
Next
End Sub
我看到你的逻辑。你是对的。但是,我不得不添加应用程序。到这一行:xReplace = Application.InputBox(“替换为:”,“SociétéGénérale”,“”,类型:= 2)否则会出错。我跑了它。现在它用“假”取代了几个月。你知道为什么吗? – Francis
@FrancisZHENG:'假'...你打了“取消”也许吧?尝试在InputBox部分之后添加'Msgbox xReplace'。我可能没有把你的输入正确。否则,它似乎是确定的。 – R3uK
我测试过了,没有问题。我必须击中“取消”,因为它现在正在工作。最后一个问题,你知道如何编写代码:如果点击“取消”,那么不要做任何替换? – Francis