Combinando IF else con LEFT para ocultar columnas
-
06-07-2019 - |
Pregunta
Estoy tratando de escribir algún código para Ocultar columnas si los primeros 3 caracteres de las celdas en un rango son iguales al contenido de otro. Tengo el código para ocultar columnas si las celdas de un rango están en blanco como esta; -
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
Y el código para identificar los primeros 3 caracteres de una célula; -
Dim LResult As String
LResult = Left ("Alphabet",3)
Pero, ¿cómo combino los dos, haciendo referencia a una celda específica en lugar de "Alfabeto"?
No puedo hacer que esto funcione, ¿alguna sugerencia?
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
Saludos
Solución
Tienes casi el código de trabajo. Estás comparando cell.Value a una cadena vacía, ahora solo aplica Left a ella
LResult = Left (cell.Value,3)
Editar:
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
donde desea datos de la celda en la fila y la columna (usé 20, 30 como ejemplo)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow