Объединение 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)
Но как мне объединить эти два понятия, ссылаясь на конкретную ячейку, а не на "Алфавит"?
Не могу заставить это работать - есть предложения?
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
Ваше здоровье
Решение
У вас есть почти рабочий код.Вы сравниваете ячейку.Значение с пустой строкой - теперь просто примените к ней левую
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
где вы хотите получить данные из ячейки в строке и столбце (я использовал 20, 30 в качестве примера)
Не связан с StackOverflow