Excel VBA类型不匹配(错误13),用于从另一个工作表上的范围引用工作表名称

时间:2017-07-05 18:09:44

标签: excel-vba vba excel

我有Personal.xls个VBA代码/宏,用于重新格式化运行代码的特定结构的任何文件。其中一项任务是从原始文件中提供的主数据表创建一系列已过滤的选项卡表。然后,我创建一个新工作表,在工作表引用列表旁边创建复选框。

我想隐藏或取消隐藏已选中复选框的基础工作表。我创建了一个按钮,当按下时(在选中复选框之后),它会自动运行一个宏,循环遍历图纸名并将它们设置为可见或不可见。因为我是个假人......

我无法获取对象的语法并获得循环执行而没有错误13类型不匹配错误。这是我正在运行的代码以及代码引用的活动工作表的附加图片。

注意:D是我将范围A1的链接单元格数据存储到“工作簿中的工作表数量”的列。

Public Sub Button_Click()
 Dim I As Integer
 For I = 1 To Sheets.Count
 If Range("AZ" & I).Value = False Or Range("AZ" & I) = Empty Then
 Sheets(Range("A" & I)).Visible = False
 Else:
 Sheets(Range("A" & I)).Visible = True
 End If
 Next
 End Sub

enter image description here

1 个答案:

答案 0 :(得分:0)

试试这个:

Public Sub Button_Click()
 Dim I As Integer
 Dim SheetName as String

 For I = 1 To Sheets.Count
 SheetName = Range("A" & I).Value
 If Range("AZ" & I).Value = False Or Range("AZ" & I) = Empty Then
 Sheets(SheetName).Visible = False
 Else:
 Sheets(SheetName).Visible = True
 End If
 Next
 End Sub 

我认为类型不匹配来自表格(范围(“A”和我))。可见线。 Sheets对象需要一个包含工作簿中有效工作表名称的字符串。在您的情况下,您指向范围值,而不是字符串。由于您指向的Range值包含工作表的名称,因此我只是将Sheets对象的SheetName变量指向。由于SheetName是一个字符串,因此不应抛出任何“类型不匹配”错误。我希望这会有所帮助。