调用sheets时,函数cell.Text()不起作用

问题描述 投票:0回答:1

我的工作簿有 10 个选项卡,其中一些选项卡是隐藏的,但我认为这对我的目的来说并不重要。在“SQL”选项卡上,我有一个我想要的新工作表名称的映射(参见 A14:B24)。我为单元格 A15 提供了一个命名范围 SheetStart,用于在代码中进行偏移。您可以忽略工作表上的其他所有内容。当我运行宏时,debug.printsheetName是$200,000,这是正确的,但是在下一行当我分配“选项1”时,它说下标超出范围。我认为问题在于使用 .Text()。有人可以解释这是为什么吗?解决这个问题的方法是什么?

Sub UpdateSheetNames()
        Dim SheetStart As Range
        Dim wb2 As Workbook
        Dim sheetName As String
        Dim formattedCell As Range

        Set wb2 = ThisWorkbook
        Set SheetStart = wb2.Sheets("SQL").Range("SheetStart")
        
        wb2.Activate
        For i = 1 To 10
            ' Get the formatted value from the cell
            Set formattedCell = SheetStart.Offset(i - 1, 0)
            sheetName = formattedCell.Text
            ' Remove any invalid characters for sheet names
            sheetName = Replace(Replace(sheetName, "/", "_"), "\", "_")
            ' Check if the sheet name is too long (Excel limits sheet names to 31 characters)
            If Len(sheetName) > 31 Then
                sheetName = Trim(Left(sheetName, 31))
            End If
            Debug.Print sheetName
            Sheets(sheetName).Name = "Option " & i 'subscript error here
            Sheets("Summary").Range("Sheet" & i).Value = "Option " & i
            
        Next i
End Sub

我尝试手动设置sheetName =“$200,000”,效果很好。这就是我知道问题出在 .Text 函数上的原因。

excel vba reference cell
1个回答
0
投票

我认为问题可能出在

.Text
返回的值之前和/或之后的“流氓”空格字符...用此替换相关行以删除它们

sheetName = Trim(Replace(Replace(sheetName, "/", "_"), "\", "_"))
© www.soinside.com 2019 - 2024. All rights reserved.