Question

J'essaie d'écrire du code dans Masquer les colonnes si les 3 premiers caractères des cellules d'une plage correspondent au contenu d'une autre. J'ai le code pour masquer les colonnes si les cellules d'une plage sont vides; -

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

Et le code permettant d'identifier les 3 premiers caractères d'une cellule; -

Dim LResult As String

LResult = Left ("Alphabet",3)

Mais comment combiner les deux en faisant référence à une cellule spécifique plutôt qu’à "Alphabet"?

Vous ne parvenez pas à ce que cela fonctionne - des suggestions?

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

A bientôt

Était-ce utile?

La solution

Vous avez presque le code de travail. Vous comparez cell.Value à une chaîne vide - il suffit maintenant d'appliquer Left à elle

LResult = Left (cell.Value,3)

Modifier:

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

où vous voulez les données de la cellule à la ligne et au col (j'ai utilisé 20, 30 comme exemple)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top