【发布时间】:2015-11-18 16:06:33
【问题描述】:
我可能发现了一个新问题!我正在尝试根据工作表的名称选择工作表,并使用变量作为名称,因为这都是循环的一部分。但是当工作表的名称是一个数字时我会遇到麻烦,因为如果我有,比如说,name = 5,那么 Worksheets(name) 给我索引号 5 的工作表和 Worksheets("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
【问题讨论】:
-
使用
cstr(name)。名称为变量。它会将数字更改为字符串。
标签: excel vba naming worksheet