使用基于单元格值的VBA隐藏Excel中的列范围

时间:2013-08-07 05:13:37

标签: excel excel-vba vba

我需要在excel中使用宏隐藏一系列单元格。 C11包含我需要开始隐藏列的列索引。

Sub test()

Dim i As Integer
Dim j As Integer


Dim rocket As Range


i = Range("c11").Value
j = 12

rocket = Range(Cells(5, i), Cells(5, j))

Range("Rocket").Select

Selection.EntireColumn.Hidden = True


End Sub

代码出现了一些意想不到的错误,因为我是新手,所以不知道需要做什么..

2 个答案:

答案 0 :(得分:1)

使代码正常工作的树步骤:

第一。在必要的相应行中添加Set关键字:

Set rocket = Range(Cells(5, i), Cells(5, j))

第二。 Rocket variable表示范围,您不需要以这种方式调用它:

Range("Rocket").... 

rocket....

第三。尽可能避免使用Select methodSelection object。因此,最后两行替换为这一行(也实现了第二步):

rocket.EntireColumn.Hidden = true

答案 1 :(得分:0)

最后的答案太棒了!仅供其他人使用,这是Excel 2007中的工作原理。第一行始终为3,但结束行必须是变量。那就是我遇到问题的地方。这个固定了! " End If"之前的最后4行做的工作。希望这有帮助!

Dim RowsToHide As Range
Dim RowHideNum As Integer

' Set Correct Start Dates for Billing in New File
Workbooks("----- Combined_New_Students_Updated.xlsx").Activate
Sheets("2015").Activate
StartDateLine1 = Format(START_DATE_1, "ww") - 1 ' Convert Start Date to Week Number
StartDateLine1 = (StartDateLine1 * 6) - 2 ' Convert Start Date to Line Number
If StartDateLine1 >= "10" Then
 Cells(4, "q").Value = ""
 Cells(StartDateLine1, "q").Value = STATUS_1
 Cells(StartDateLine1, "z").Value = "START DATE " + START_DATE_1
 RowHideNum = StartDateLine1 - 2
 Set RowsToHide = Range(Cells(3, "a"), Cells(RowHideNum, "ab"))
 RowsToHide.Select
 RowsToHide.EntireRow.Hidden = True
End If