参考用户输入命名的 Sheet

参考用户输入命名的 Sheet

运行宏并在此原始表中生成数据后,我提示用户使用以下代码命名该原始表。

oriSheet = InputBox("Please Name the Sheet?", vbOKCancel)
If oriSheet = False Or oriSheet = "" Then
MsgBox "Invalid Name"
Exit Sub
Else
ActiveSheet.Name = oriSheet
End If
oriSheet = ""

然后我运行另一个子程序,获取刚才的 oriSheet 进行过滤。
是否可以使用变量引用该工作表?
因为我似乎无法通过以下代码中的错误“下标超出范围”到达那里。

Set sht = ThisWorkbook.Worksheets("oriSheet")
Set newsht = ThisWorkbook.Worksheets("sheet2")

我删除了双引号,因为这样 oriSheet 就不会像其他编程语言一样被解释。但它仍然不起作用。

我以为这可能很容易,但我花了几个小时才找到答案。
我去谷歌搜索,有一句话说“引用工作表有两种方式,一种是通过索引(但我不知道索引)一种是通过名称(但我也不知道名称?)”

答案1

将您的第一个宏更改为oriSheet在其末尾存储到另一个变量中;

Public oriSheetRecorder As String
oriSheet = InputBox("Please Name the Sheet?", vbOKCancel)
If oriSheet = False Or oriSheet = "" Then
MsgBox "Invalid Name"
Exit Sub
Else
ActiveSheet.Name = oriSheet
On Error Goto Errorhandler
oriSheetRecorder = oriSheet
oriSheet = ""
End If

Errorhandler:
MsgBox "Name of the active sheet is " , ActiveSheet.Name, "It is Invalid Name or an error has happened"
Exit Sub

然后在你的第二个中Sub有这个:

Set sht = ThisWorkbook.Worksheets(oriSheetRecorder)
Set newsht = ThisWorkbook.Worksheets("sheet2")

您的代码现在不起作用的原因是,因为您清除了oriSheet此行:oriSheet = ""所以稍后您无法引用它。此外,您不需要(不应该)"在变量周围放置。double-quote在 excel 中用于区分文本和命令和变量。oriSheet是一个变量,根据其定义它是一个字符串,因此它永远不需要"在它周围被识别为文本。

相关内容