Microsoft Excel

Herbers Excel/VBA-Archiv

Zelle nichtleer, dann Spalten ausblenden

Betrifft: Zelle nichtleer, dann Spalten ausblenden von: kellerkind42
Geschrieben am: 20.08.2008 07:29:56

hallo.
Ich tue mich sehr schwer mit folgendem Wunsch:

Im Spaltenbereich A-Z:
Im Zeilenbereich 10 -20:

z.B:
Steht in Spalte C etwas in Zeile 10 oder 11 oder 12.... dann Blende diese Spalte aus!

Kann mir bitte jemand auf die Sprünge helfen?

Gruß Reinhardt.

  

Betrifft: AW: Zelle nichtleer, dann Spalten ausblenden von: Marc
Geschrieben am: 20.08.2008 08:16:17

Bitte schön!

Private Sub Worksheet_Change(ByVal Target As Range)

a = Target.Column
b = Target.Row

If Target.Column < 26 And Target.Row >= 10 And Target.Row <= 20 And Target.Value <> "" Then
    
    
    Columns(a).EntireColumn.Hidden = True
    
End If
End Sub




  

Betrifft: noch ne Frage von: kellerkind42
Geschrieben am: 20.08.2008 09:17:52

hey,
das ist ja ein Superkurzer.. Code. Meine Versuche waren 3 Meter lang....
Es geht, wie du es gesendet hast.
Ich habe es noch ein bißchen abgewandelt, möchte aber die Sub auf Knopfdruck nutzen.
Und da bekomme ich eine Fehlermeldung bei: a = Target.Column Objekt erforderlich!
Was mache ich verkehrt?


Private Sub test()
Sheets("Kalender").Select
a = Target.Column
b = Target.Row

If Target.Column > 46 And Target.Column < 51 And Target.Row >= 80 And Target.Row <= 95 And  _
Target.Value <> "" Then
    
    
    Columns(a).EntireColumn.Hidden = True
    
End If
End Sub




  

Betrifft: AW: noch ne Frage von: Marc
Geschrieben am: 21.08.2008 07:08:50

Im Grunde ganz einfach:

Wenn du den Knopf drückst, hast du kein "Target" mehr im Tabellensheet, sonder der der fokus liegt auf dem Knopf!

Du solltest dann mit ActiveCell.Offset(-1, 0) arbeiten. Dann ist auf jeden Fall die Zelle über der gemachten Eingabe (nach Enter) angegeben. Falls du nicht mit Offset arbeiten willst, kannst du ja nach jeder Änderung im Dokument automatisch zu Target zurückspringen. (Beim obigen Code ist es natürlich Quatsch, die Variablen a u. b zu setzen, aber nachher nicht zu benutzen...:-)) Mit den Änderungen ergibt sich folgender neue Code:




Sub Schaltfläche1_BeiKlick()
'

Sheets("Kalender").Select
a = ActiveCell.Offset(-1, 0).Column
b = ActiveCell.Offset(-1, 0).Row

If a > 46 And a < 51 And b >= 80 And b <= 95 And _
ActiveCell.Offset(-1, 0).Value <> "" Then
    
    
    Columns(a).EntireColumn.Hidden = True
    
End If
End Sub



'


  

Betrifft: AW: Zelle nichtleer, dann Spalten ausblenden von: mpb
Geschrieben am: 20.08.2008 09:17:43

Hallo Reinhardt,

Private Sub Worksheet_Activate()
For i = 1 To 26
    If Application.WorksheetFunction.CountBlank(Range(Cells(10, i), Cells(12, i))) < 3 Then
        Columns(i).EntireColumn.Hidden = True
    Else
        Columns(i).EntireColumn.Hidden = False
    End If
Next i
End Sub



führt das Ausblenden durch, wenn die Tabelle aktiviert wird. Du kannst den Code aber auch einer anderen Ereignisprozedur zuweisen.

Gruß
Martin

P.S. Stutzig macht mich Dein "z.B.". Ich habe den Code jetzt für den Fall geschrieben, den Du beschrieben hast, jedoch nicht nur auf Spalte C bezogen, sondern auf alle Spalten im Bereich A:Z.

Gruß
Martin


  

Betrifft: Danke für die Hilfe.. ! Das klappt. o.T. von: kellerkind42
Geschrieben am: 20.08.2008 09:55:48

.


 

Beiträge aus den Excel-Beispielen zum Thema "Zelle nichtleer, dann Spalten ausblenden"