Excel VBA 如何解决用户窗体输入时点号换逗号不生效问题
VBA点号转逗号替换不生效问题解决方案
故障原因
- 工作表引用不匹配:写入值时明确指定了
Worksheets("1"),但后续替换操作的Range("C10")未指定工作表,默认作用于当前激活的工作表,若激活页不是名为1的工作表,替换就不会作用到目标单元格 - 冗余的选择操作:
Select/Activate依赖界面状态,容易因为窗口切换、工作表激活状态变化导致操作失效 - 版本兼容问题:
xlReplaceFormula2是Excel 365及之后版本才支持的常量,旧版本Excel识别失败会导致整段替换代码不执行
修复方案
推荐直接在写入单元格前处理文本内容,逻辑更简单也不会触发兼容问题,修正后代码如下:
Private Sub CmdFinish1_Click() ' 先处理文本内容,替换点号为逗号,再拼接单位写入单元格 Dim inputStr As String inputStr = Replace(UserForm.TextBox1.Value, ".", ",") Worksheets("1").Range("C10").Value = inputStr & "mm" UserForm.Hide End Sub
如果一定要保留写入后替换的逻辑,修正工作表引用和兼容问题即可:
Private Sub CmdFinish1_Click() Worksheets("1").Range("C10").Value = UserForm.TextBox1.Value & "mm" ' 明确指定工作表,去掉不兼容的xlReplaceFormula2参数 Worksheets("1").Range("C10").Replace What:=".", Replacement:=",", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False UserForm.Hide End Sub
内容的提问来源于stack exchange,提问作者MarkAKE
相关产品推荐
相关产品推荐

