Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在vba中引用具有不同编号的图纸名称_Excel_Vba_Range - Fatal编程技术网

Excel 如何在vba中引用具有不同编号的图纸名称

Excel 如何在vba中引用具有不同编号的图纸名称,excel,vba,range,Excel,Vba,Range,我正在尝试使用vba引用一系列具有通用名称和唯一编号的图纸,以在每张图纸上划分一个范围。但我有一个1004的错误 For lngWeek = 1 To 53 strSheet = "Week" & Trim(Str(lngWeek)) strRange = strSheet & "!B5:H7" Range(strRange).Activate Next 工作表为1周、2周等,我需要清除每张工作表上的B5:H7范围

我正在尝试使用vba引用一系列具有通用名称和唯一编号的图纸,以在每张图纸上划分一个范围。但我有一个1004的错误

For lngWeek = 1 To 53
    strSheet = "Week" & Trim(Str(lngWeek))
    strRange = strSheet & "!B5:H7"
    Range(strRange).Activate
Next
工作表为1周、2周等,我需要清除每张工作表上的B5:H7范围。从第一周一直到第53周


为什么范围.Activate无法选择每页?

如果要清除任何工作表中具有表单周名称的相同范围,则可以处理所有工作表,并仅对名称与正确格式匹配的工作表执行操作

Sub ClearSpecial()
Dim ASheet As Worksheet
Dim ToClear As Boolean

For Each ASheet In ActiveWorkbook.Worksheets
    ToClear = Left(ASheet.Name, 4) = "Week" ' add more conditions if needed
    If ToClear Then
        ASheet.Range("B5:H7").ClearContents
    End If
Next ASheet

End Sub

例如,如果还有一个名为Weekly Summary的工作表,您也可以展开测试以排除该工作表。

如果您想清除任何工作表中具有表单周名称的相同范围,您可以处理所有工作表,并且只处理名称与正确格式匹配的工作表

Sub ClearSpecial()
Dim ASheet As Worksheet
Dim ToClear As Boolean

For Each ASheet In ActiveWorkbook.Worksheets
    ToClear = Left(ASheet.Name, 4) = "Week" ' add more conditions if needed
    If ToClear Then
        ASheet.Range("B5:H7").ClearContents
    End If
Next ASheet

End Sub

例如,如果还有一个名为“每周总结”的工作表,您可以扩展测试以排除该工作表。

您在此处遇到错误1004:

因为strRange是sheet限定的,但Range不是;它是一个,这意味着Range.Activate成员调用只能在strRange引用已在活动表上的单元格时工作。建议:将strRange重命名为cellAddress或其他有实际意义的名称。字符串的str没有用处;哦,那是一个地址-

为了能够选择特定范围,必须首先取消对要使用的工作表对象的引用,其中sheetName包含工作表的名称:

将ws设置为工作表 设置ws=ThisWorkbook.WorksheetssheetName 然后安排地址就不再需要周末了!第部分:

ws.Activate ws.RangeB5:H7.Select
请注意,除非是为了方便用户,否则通常几乎没有理由在VBA中选择或激活任何内容:当您正确限定正在使用的所有对象时,如果ActiveSheet不是代码假定为活动的工作表,则不会出现错误1004,因为代码将不再假设工作表处于活动状态。

此处出现错误1004:

因为strRange是sheet限定的,但Range不是;它是一个,这意味着Range.Activate成员调用只能在strRange引用已在活动表上的单元格时工作。建议:将strRange重命名为cellAddress或其他有实际意义的名称。字符串的str没有用处;哦,那是一个地址-

为了能够选择特定范围,必须首先取消对要使用的工作表对象的引用,其中sheetName包含工作表的名称:

将ws设置为工作表 设置ws=ThisWorkbook.WorksheetssheetName 然后安排地址就不再需要周末了!第部分:

ws.Activate ws.RangeB5:H7.Select
请注意,除非是为了方便用户,否则通常几乎没有理由在VBA中选择或激活任何内容:当您正确限定正在使用的所有对象时,如果ActiveSheet不是代码假定为活动的工作表,则不会出现错误1004,因为代码不再假设工作表处于活动状态。

您不需要激活。thishworkbook.WorksheetsWeek&lngWeek.RangeB5:H7.ClearContents.使用CStr而不是Str.阅读文档找出原因。您甚至不需要CStr。“不需要CStr,@BigBen,但是说你的意思,说你的意思,以便更清楚地表达你的意思。”code@FreeMan&按它所说的做。您不需要激活。thishworkbook.WorksheetsWeek&lngWeek.RangeB5:H7.ClearContents.使用CStr而不是Str.阅读文档找出原因。您甚至不需要CStr。“不需要CStr,@BigBen,但是说你的意思,说你的意思,以便更清楚地表达你的意思。”code@FreeMan&照它说的做。谢谢你,马修。我是一个老派的人,变量类型对我来说也很有用:哦,这是一个简单的问题,地址没有帮助,因为它可能是一个长数字、短数字、双数字、字符串或许多其他变量类型。我将str放在前面,以显示范围变量是字符串。但感谢您澄清了1004错误的原因。@tmd63,如果您这样说的话。FYI Systems匈牙利符号在所有类型的编程语言中都被普遍抛弃,并被严重劝阻,它在VBA和VB6中根深蒂固的顽固用法在很大程度上促成了VBA和VB6成为现存最可怕的语言。我强烈推荐阅读,它解释了匈牙利符号是如何和为什么产生的,以及匈牙利符号是如何和为什么做对的,而不是字符串的str或lng。干杯此外,Ctrl+i为您提供插入符号所在的任何内容的数据类型,FWIW,并且任何变量都不应在其使用过程中被声明为看不见的。作为孜孜不倦、几乎是传教士式的沟通者,您对经常被忽视甚至被忽略的代码基础知识有着基本的理解,您应该得到联合国的大感谢我真的希望你的宝贵意见和建议的精髓能够找到
官方帮助网站中的表达方式,因为完全限定的范围引用似乎广为未知,所以几代用户可能会受到误导@MathieuGuindon@T.M.哇,谢谢你!谢谢你,马修。我是一个老派的人,变量类型对我来说也很有用:哦,这是一个简单的问题,地址没有帮助,因为它可能是一个长数字、短数字、双数字、字符串或许多其他变量类型。我将str放在前面,以显示范围变量是字符串。但感谢您澄清了1004错误的原因。@tmd63,如果您这样说的话。FYI Systems匈牙利符号在所有类型的编程语言中都被普遍抛弃,并被严重劝阻,它在VBA和VB6中根深蒂固的顽固用法在很大程度上促成了VBA和VB6成为现存最可怕的语言。我强烈推荐阅读,它解释了匈牙利符号是如何和为什么产生的,以及匈牙利符号是如何和为什么做对的,而不是字符串的str或lng。干杯此外,Ctrl+i为您提供插入符号所在的任何内容的数据类型,FWIW,并且任何变量都不应在其使用过程中被声明为看不见的。作为孜孜不倦、几乎是传教士式的沟通者,您对经常被忽视甚至被忽略的代码基础知识有着基本的理解,您应该得到联合国的大感谢我真的希望你有价值的评论和建议的精髓能在官方帮助网站上得到体现,因为完全限定的范围引用似乎是广为人知的,所以几代用户可能会被误导@MathieuGuindon@T.M.哇,谢谢你!非常感谢。我在按钮代码中使用了这个,它需要一段时间,但效果很好,有52周和12个月的页面,还有一些其他页面。谢谢。我在按钮代码中使用了这个,它需要一段时间,但效果很好,有52周和12个月的页面,还有一些其他页面。