Hallo Bernd,
For intSpalte = 1 To 256
bedeutet, dass die Spalten 1 bis 256, also A bis IV durchlaufen werden.
Mit dem Befehl
If Cells(3, intSpalte) = "z" Then
durchsuchst du die 3. Zeile der Spalten 1 bis 256 nach einem z.
Verbundene Spalten machen eigentlich nur Probleme und sollten vermieden werden.
Mit dem Code wird nur die Spalte ausgeblendet, in der das z steht, der leere Rest der verbundenen Spalten aber nicht, da in verbundenen Spalten i.d.R. nur in der ersten Spalte ein Wert steht und in den anderen nicht.
Sollen über mehrere Spalten verbundene Zellen ausgeblendet werden, so ist das etwas komplizierter:
Sub Spalte_ausb()
Dim intSpalte As Integer
Dim rngStartZelle As Range 'erste Zelle des verbundenen Bereichs
Dim rngEndZelle As Range 'letzte Zelle des verbundenen Bereich
'Bildschirmaktualiserung aus
Application.ScreenUpdating = False
'Spalten 1 bis 256 durchlaufen
For intSpalte = 1 To 256
'in 3. Zeile prüfen, ob ein z in Zelle steht
If Cells(3, intSpalte) = "z" Then
'prüfen, ob verbundene Zellen vorliegen
If Cells(3, intSpalte).MergeCells Then
'falls ja, dann
'erste und letzte Zelle der verbundenen Zellen feststellen
Set rngStartZelle = Cells(3, intSpalte).MergeArea(1)
Set rngEndZelle = Cells(3, intSpalte).MergeArea(Cells(3, intSpalte).MergeArea.Cells.Count)
'Bereich der verbundenen Zellen ausblenden
Range(rngStartZelle, rngEndZelle).EntireColumn.Hidden = True
Else
'falls nein
'Spalte normal ausblenden
Columns(intSpalte).EntireColumn.Hidden = True
End If
End If
Next intSpalte
'Zuweisungen der 1. und letzten Spalte wieder aufheben
Set rngStartZelle = Nothing
Set rngEndZelle = Nothing
'Bildschirmaktualiserung ein
Application.ScreenUpdating = True
End Sub
Gruß
M.O.