我正在尝试生成一个VBA函数,它将隐藏单元格D9:CC9不等于“A6”且单元格D8:CC8不等于“12”的所有列。根据下面的脚本,系统会不断返回错误。我是VBA的新手,希望有人能够提供帮助。
谢谢!
Dim MyCell As Range
Set MyCell = Range("D9:CC9,D8:CC8")
For Each cell In MyCell
If cell.Value <> WorksheetFunction.Index(Range("D9:CC9"),WorksheetFunction.Match(Range("A6")&"12",Range("D9:CC9")&Range("D8:CC8"), 0))
cell.EntireColumn.Hidden = True
End If
Next cell
答案 0 :(得分:0)
使用VBA执行大多数操作与手动执行完全不同。如果你想使用VBA,那么应该做一些关于使用变量和对象的研究。这页应该是有意义的。
Variables & Constants,Excel Objects,With Statement&amp; Range Properties (Excel)
我对您的代码进行了一些更改,请参阅其中的注释,并参阅上述页面。
Sub Rng_HideColumns()
Dim rTrg As Range, rCol As Range
Dim sCllVal As String
Rem Set rTrg = ThisWorkbook.Sheets("Sht(0)").Range("D9:CC9,D8:CC8")
Rem Refers to the worksheet you want to work with instead or using the active worksheet
With ThisWorkbook.Sheets("Sht(0)")
Rem Get value to match
sCllVal = .Range("A6").Value2 & 12
Rem Set Range to Search
Set rTrg = .Range("D8:CC9")
For Each rCol In rTrg.Columns
With rCol
If .Cells(2).Value2 & .Cells(1).Value2 = sCllVal Then
.EntireColumn.Hidden = 1
Else
.EntireColumn.Hidden = 0
End If: End With: Next: End With
End Sub