Combinando IF else con LEFT per nascondere le colonne
-
06-07-2019 - |
Domanda
Sto cercando di scrivere del codice su Nascondi colonne se i primi 3 caratteri delle celle in un intervallo corrispondono al contenuto di un altro. Ho il codice per nascondere le colonne se le celle in un intervallo sono vuote come questa; -
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
E il codice per identificare i primi 3 caratteri di una cella; -
Dim LResult As String
LResult = Left ("Alphabet",3)
Ma come combinare i due, facendo riferimento a una cella specifica anziché a "Alfabeto"?
Non riesci a farlo funzionare - qualche suggerimento?
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
Saluti
Soluzione
Hai quasi il codice funzionante. Stai confrontando cell.Value con una stringa vuota - ora applica solo Left ad essa
LResult = Left (cell.Value,3)
Modifica:
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
dove vuoi i dati dalla cella alla riga e al col (ho usato 20, 30 come esempio)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow