Excel 当工作表名称为数字时,索引编号/工作表名称与变量混淆

Excel 当工作表名称为数字时,索引编号/工作表名称与变量混淆,excel,vba,naming,worksheet,Excel,Vba,Naming,Worksheet,我可能发现了一个新问题!我试图根据工作表的名称选择工作表,使用变量作为名称,因为这都是循环的一部分。但是当工作表的名称是一个数字时,我会遇到麻烦,因为如果我有,比如说,name=5,那么工作表(name)会给我索引号5工作表,工作表(“name”)当然会查找名为“name”的工作表 我可以在每个工作表的名称中添加一个字母,这样它就不会被视为一个数字,然后删除这些字母,但有更好的方法吗 Sub RenameFiles() Dim source, old_filename, old_tab, new

我可能发现了一个新问题!我试图根据工作表的名称选择工作表,使用变量作为名称,因为这都是循环的一部分。但是当工作表的名称是一个数字时,我会遇到麻烦,因为如果我有,比如说,name=5,那么工作表(name)会给我索引号5工作表,工作表(“name”)当然会查找名为“name”的工作表

我可以在每个工作表的名称中添加一个字母,这样它就不会被视为一个数字,然后删除这些字母,但有更好的方法吗

Sub RenameFiles()
Dim source, old_filename, old_tab, new_filename As String
Dim i As Integer
source = Range("path").Value
For i = 1 To Range("total_file_number").Value
    old_filename = Worksheets("Import and combine").Cells(3 + i, 2).Value
    old_tab = Worksheets("Import and combine").Cells(3 + i, 3).Value
    new_filename = Worksheets(old_tab).Cells(1, 1).Value 'If old_tab is a number, VBA treats Worksheets(old_tab) as looking up a worksheet by index number rather than name
    If Left(Worksheets(old_tab).Cells(1, 1).Value, 1) = "*" Then new_filename = Right(new_filename, Len(new_filename) - 2) 'removes asterisk from name
    new_filename = Replace(new_filename, ">", "") 'removes > from name, since > can't be used in file names
    Worksheets(old_tab).Name = new_filename
    Worksheets("Import and combine").Cells(3 + i, 3).Value = new_filename
    Name source & "\" & old_filename As source & "\" & new_filename
Next i
End Sub

您的问题是由以下线路引起的:

Dim source, old_filename, old_tab, new_filename As String
…但在您尝试访问工作表集合之前,它不会自行显示

这是一个非常常见的错误。上行中唯一一个字符串类型的变量是最后一个。其他每一个都是类型变体

为变量
old_选项卡
赋值时,任何数值都将存储为数字,而不是字符串。问题是工作表集合需要一个字符串值作为键来返回正确的工作表

如果上行中的每个变量都应为String类型,则执行以下操作:

Dim source As String, old_filename As String, old_tab As String, new_filename As String

…现在,
old tab
是一个字符串,它的值将作为工作表集合的键正常工作。

使用
cstr(name)
。使用name作为变量。它会把数字变成字符串。在这里我觉得我发现了一些新的东西。谢谢,这正是问题所在!