String 无法将变量中的字符串指定为工作表名称
基本上,我正在尝试在当前工作簿中创建一个与所选文件同名的新工作表String 无法将变量中的字符串指定为工作表名称,string,vba,excel,String,Vba,Excel,基本上,我正在尝试在当前工作簿中创建一个与所选文件同名的新工作表 Sub ImportReport() '(clickable button) 'prompt to select file, get file name (of Report) Dim reportFullName As String reportFullName = PromptGetReportFullName() Dim reportName As String 'Grab
Sub ImportReport()
'(clickable button)
'prompt to select file, get file name (of Report)
Dim reportFullName As String
reportFullName = PromptGetReportFullName()
Dim reportName As String
'Grabs the excel file name from the full directory path
reportName = Mid(reportFullName, InStrRev(reportFullName, "\") + 1, InStrRev(reportFullName, ".") - (InStrRev(reportFullName, "\") + 1))
'add Sheet after last Sheet with report name
Call AddReportSheet(reportName)
End Sub
Private Function PromptGetReportFullName() As String
Dim startingFileDirectory As String
startingFileDirectory = Range("A6").Text
ChDrive FileDirectory
PromptGetReportFullName = Application.GetOpenFilename(, , "Report File")
End Function
Private Sub AddReportSheet(sheetName As String)
With ActiveWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).name = sheetName
End With
End Sub
奇怪的部分是在Sub-ImportReport()
中调用MsgBox(reportName)
,工作正常,并为我提供了所需的文件名,但是在Private Sub-AddReportSheet()
中将工作表名指定给reportName
中的无法创建使用reportName
字符串命名的新工作表
如果将AddReportSheet()
中的reportName
替换为类似“test”的随机字符串,程序将成功创建名为“test”的新工作表
我猜reportName只是没有存储为字符串?虽然我不知道为什么会这样,我也不知道如何修复它。您已在SubAddReportSheet
中将sheetName
声明为变量名,但您正在尝试使用reportName
而不是sheetName
。由于子AddReportSheet
中的reportName
变量为空,因此它不起作用。因此,如下更改变量名:
Private Sub AddReportSheet(sheetName As String)
With ActiveWorkbook
'REPLACED reportName WITH sheetName
.Sheets.Add(After:=.Sheets(.Sheets.Count)).name = sheetName
End With
End Sub
您已将sheetName
声明为子AddReportSheet
中的变量名,但您试图使用reportName
而不是sheetName
。由于子AddReportSheet
中的reportName
变量为空,因此它不起作用。因此,如下更改变量名:
Private Sub AddReportSheet(sheetName As String)
With ActiveWorkbook
'REPLACED reportName WITH sheetName
.Sheets.Add(After:=.Sheets(.Sheets.Count)).name = sheetName
End With
End Sub
可能您的文件名包含工作表名称中非法的字符,或者文件名太长?Excel有以下限制:
- 不使用“:\/?*[]”
- 不超过32个字符
可能您的文件名包含工作表名称中非法的字符,或者文件名太长?Excel有以下限制:
- 不使用“:\/?*[]”
- 不超过32个字符
你说得对,那真是个愚蠢的错误。它是在尝试了许多方法来做同样的事情之后出现的。尽管如此,使用sheetName
还是不起作用,尽管我不明白为什么不:(嗯,sheetName
是否在AddReportSheet
Sub中携带了所需的值?试着调试并查看。MsgBox(sheetName)AddReportSheet
中的给了我一个奇怪的字符串。请编写一个简单的Sub
来添加带有硬编码sheetName的工作表,并查看它是否有效。例如,使用ActiveWorkbook.Sheets.add添加(后面:=.Sheets(.Sheets.Count)).name=“测试”
你是对的,那真是一个愚蠢的错误。它是在尝试了许多方法来做同样的事情之后出现的。尽管如此,使用sheetName
还是不起作用,尽管我不明白为什么不起作用:(嗯,sheetName
是否在AddReportSheet
Sub中携带了所需的值?试着调试并查看。MsgBox(sheetName)AddReportSheet
中的给了我一个奇怪的字符串。请编写一个简单的Sub
来添加带有硬编码sheetName的工作表,并查看它是否有效。例如,使用ActiveWorkbook.Sheets.add添加(后面:=.Sheets(.Sheets.Count)).name=“测试”
是的!就是这样!名称太长了。非常感谢。回想起来,这是错误消息上列出的可能问题之一。我只是掩饰了一下。是的!就是这样!名称太长了。非常感谢。回想起来,这是错误消息上列出的可能问题之一。我只是掩饰一下我对它很感兴趣。