将IF else与LEFT组合以隐藏列
-
06-07-2019 - |
题
如果某个范围中单元格的前3个字符等于另一个单元格的内容,我正在尝试编写一些代码来隐藏列。如果范围中的单元格为空,我有隐藏列的代码; -
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, cell As Range
On Error GoTo ErrHandler
Set r = Me.Range("C8:R8")
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each cell In r
If cell.Value = "" Then
cell.EntireColumn.Hidden = True
Else
cell.EntireColumn.Hidden = False
End If
Next
ErrHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
用于识别单元格的前3个字符的代码; -
Dim LResult As String
LResult = Left ("Alphabet",3)
但是如何将两者结合起来,引用一个特定的单元格而不是“Alphabet”?
不能让这个工作 - 有什么建议吗?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, cell As Range
On Error GoTo ErrHandler
Set r = Me.Range("B7:CG7")
Application.ScreenUpdating = False
Application.EnableEvents = False
Row = 1
col = 1
For Each cell In r
If cell.Value = "" And Left(cell.Value, 3) = cell(Row, col).Value Then
cell.EntireColumn.Hidden = True
Else
cell.EntireColumn.Hidden = False
End If
Next
ErrHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
干杯
解决方案
你几乎有工作代码。您正在将cell.Value与空字符串进行比较 - 现在只需将Left应用于它
LResult = Left (cell.Value,3)
编辑:
row = 20
col = 30
For Each cell In r
If cell.Value = "" and Left (cell.Value,3) = Cell(row, col).Value Then
cell.EntireColumn.Hidden = True
Else
cell.EntireColumn.Hidden = False
End If
你想要来自行和col的单元格的数据(我使用20,30作为例子)
不隶属于 StackOverflow