VBA:InputBox错误地使用了以前的用户输入而没有提示输入新内容

时间:2017-05-15 00:55:16

标签: excel vba excel-vba

这是我正在学习编写的VBA代码(从Internet获得一些参考)

Public whatyousay As String

Sub testing()

b14
b15

End Sub

Function WorksheetExists(WSName As String) As Boolean

    On Error Resume Next
    WorksheetExists = Worksheets(WSName).Name = WSName
    On Error GoTo 0

End Function

Sub b14()

Dim sh As Worksheet

Do Until WorksheetExists(whatyousay)
    whatyousay = InputBox("Enter sheet name")
    If Not WorksheetExists(whatyousay) Then MsgBox whatyousay & " doesn't exist.", vbExclamation
Loop
If WorksheetExists(whatyousay) Then Sheets(whatyousay).Activate

End Sub

Sub b15()

ThisWorkbook.Worksheets(whatyousay).Range("A1").Value = xxxx

End Sub

我必须错误地调整代码,因为我在互联网上找不到任何有同样问题的人。

单击该按钮时,应该提示用户输入工作表名称,然后执行一些操作。

现在,我面临的问题是该按钮仅提示用户输入一次。如果第二次单击它,它将使用先前的用户输入而不提示。

你们中的任何人都可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您没有删除上一次循环中 whatyousay 中剩余的内容。

Sub b15()

    ThisWorkbook.Worksheets(whatyousay).Range("A1").Value = xxxx
    whatyousay = vbnullstring      '<~~ remove the string from last time

End Sub

就个人而言,我避免公共场合。您可以通过将字符串var作为参数传递给辅助子来执行相同的操作。