Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 按变量选择工作表_Vba_Excel - Fatal编程技术网

Vba 按变量选择工作表

Vba 按变量选择工作表,vba,excel,Vba,Excel,我正在尝试激活基于变量的工作表。我不断得到一个运行时错误代码9 我的密码是: c = 42705 + (b - 1) * 7 Sheets.Add(After:=ActiveSheet).Name = c ' Do something here Worksheets("Import").Activate ' Do something here Worksheets(c).Activate 如果工作表的名称因迭代而不同,如何选择工作表?我会将工作表引用到如下变量,以避免更改名

我正在尝试激活基于变量的工作表。我不断得到一个运行时错误代码9

我的密码是:

c = 42705 + (b - 1) * 7
Sheets.Add(After:=ActiveSheet).Name = c
    ' Do something here

Worksheets("Import").Activate
    ' Do something here

Worksheets(c).Activate

如果工作表的名称因迭代而不同,如何选择工作表?

我会将工作表引用到如下变量,以避免更改名称或索引时出现任何问题

c = 42705 + (b - 1) * 7

Dim newWS As Worksheet
Set newWS = Worksheets.Add(After:=ActiveSheet)
newWS.Name = c
    ' Do something here

Worksheets("Import").Activate
    ' Do something here

newWS.Activate

根据VBA最佳实践,您应该始终定义并设置对所有工作簿和工作表的引用

问题在于您没有使用
选项Explicit
,因此VBA认为
c
属于
变体
类型。因此,它首先转换为long,以后不会转换为string。始终使用选项显式

如果你加上
Dim c as String
对于您的代码,它应该可以工作。:)

目前,它正在寻找索引在
40000左右的工作表,很可能您没有这么多

通常-如果按错误消息上的调试按钮,然后选择
C
并按Shift键+
F9您将看到有关所选变量的更多信息。

工作表的索引必须是字符串。将整数转换为字符串。我用Dim c作为变量。换成弦乐效果很好。谢谢,我需要阅读最佳实践来帮助正确设置。谢谢你的链接。