Сочетание IF else с LEFT для скрытия столбцов - PullRequest
2 голосов
/ 28 октября 2009

Я пытаюсь написать код для скрытия столбцов, если первые 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

Приветствия

1 Ответ

4 голосов
/ 28 октября 2009

У вас есть почти рабочий код. Вы сравниваете ячейку. Значение с пустой строкой - теперь просто примените к ней Левый

LResult = Left (cell.Value,3)

Edit:

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 в качестве примера)

...