Excel 2010 spalten ausblenden per vba

Hallo zusammen!

Ich habe von VBA leider keine Ahnung und bin bei meinem Problem noch zu keiner Lösung gekommen.

Die Situation gestaltet sich wie folgt:

Ich arbeite in meiner Mappe (genauer gesagt in Tabelle 2, falls Angabe wichtig) mit zwei Formularsteuerelementen (Optionsfeld 155 & Optionsfeld 156). Je nachdem welches dieser beiden Optionsfelder ich anklicke, bekomme ich in der Zelle „N2“ eine Zahl angezeigt (1 oder 2).
Nun zu meinem eigentlichen Problem…
Ich möchte gerne erreichen, dass beim Auswählen des Optionsfeldes 155 (wenn also in Zelle „N2“ eine 1 angezeigt wird) die kompletten Spalten Z-EA automatisch ausgeblendet werden.
Nach einiger Recherche habe ich folgenden - für mein Anliegen leider nur teilweise funktionierenden - Code gefunden, den ich aber mangels eigener VBA-Kenntnisse leider nicht entsprechend modifiziert bekomme:

If target = range(„D8“) Then
Select Case target.Value
Case Is = 1
Columns(„E:E“).Hidden = True
Case Is 1
Columns(„E:E“).Hidden = False

End Select
End If
End Sub

Dieser Code funktioniert leider nur dann, wenn ich in besagter Zelle die erforderliche Zahl manuell eintrage (also ohne Auto-Funktion nach „Optionsfeld-Klick“).

Danke im Voraus für Eure Hilfe!

Grüezi Bernd

Ich habe von VBA leider keine Ahnung und bin bei meinem
Problem noch zu keiner Lösung gekommen.

Wo hast Du denn bisher nachgefragt?

Ich arbeite in meiner Mappe (genauer gesagt in Tabelle 2,
falls Angabe wichtig) mit zwei Formularsteuerelementen
(Optionsfeld 155 & Optionsfeld 156). Je nachdem welches dieser
beiden Optionsfelder ich anklicke, bekomme ich in der Zelle
„N2“ eine Zahl angezeigt (1 oder 2).

Wie genau kommt die Zahl denn in diese Zelle?
Was hast Du da unternommen?

Und woher stammt die Optionsfelder?

Nach einiger Recherche habe ich folgenden - für mein Anliegen
leider nur teilweise funktionierenden - Code gefunden, den ich
aber mangels eigener VBA-Kenntnisse leider nicht entsprechend
modifiziert bekomme:

Der Code ist leider unvollständig - es fehlt die Kopfzeile, die vermutlich ein Ereignis auf dem Tabellenblatt anspricht…

If target = range(„D8“) Then
Select Case target.Value
Case Is = 1
Columns(„E:E“).Hidden = True
Case Is 1
Columns(„E:E“).Hidden = False

End Select
End If
End Sub

Dieser Code funktioniert leider nur dann, wenn ich in besagter
Zelle die erforderliche Zahl manuell eintrage (also ohne
Auto-Funktion nach „Optionsfeld-Klick“).

Das klingt als ob es Optionsfelder aus der Steuerelemente-Toolbox sind und Du den Wert dann über das Click-Ereignis des Feldes in die Zelle schreibst?

Dann kannst Du doch ohne auf die Zelle Bezug zu nehmen, die Spalten gleich direkt im Click-Ereignis des Feldes ansprechen und aus- sowie einblenden - im einen Feld halt ein- und im andern ausblenden.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo DerBernd,

das kannst du auch einfacher lösen, indem du den Hidden-befehl direkt an das Optionsfeld koppelst:

Private Sub OptionButton155_Click()
If OptionButton155.Value = True Then Columns(„E:E“).Hidden = True
End Sub

Private Sub OptionButton156_Click()
If OptionButton156.Value = True Then Columns(„E:E“).Hidden = False
End Sub

Dazu musst du im Entwurfsmodus ein Doppelklick auf das jeweilige Optionsfeld machen.

Gruß
Natator

Hi,
dann leg die Entscheidung einfach auf den Optionsbutton:
Sub HideColumn

If Optionbutton155.Value = True Then
Columns(„E:E“).Hidden = True
Else
Columns(„E:E“).Hidden = False
End If
End Sub

Hallo

probiers hiermit ist ungetest, namen des formula und name des optionsfeld ausbessern.
if NameDesFormular.NameDesOptionsfeld155.value == 1 _
or NameDesFormular.NameDesOptionsfeld156.value == 1 then
Columns(„E:E“).Hidden = True
else
Columns(„E:E“).Hidden = False
end if

If target = range(„D8“) Then
Select Case target.Value
Case Is = 1
Columns(„E:E“).Hidden = True
Case Is 1
Columns(„E:E“).Hidden = False

End Select
End If
End Sub

Hallo Bernd,

Versuch mal folgendes:

If cells(14,2).Value = 1 then
Columns(Z:EA).hidden =true
Else
Columns(Z:EA).hidden =false
End if

Mit cells(Col,Row).Value greifst du direkt auf eine Zelle zu.

wenn’s nicht klappt, dann schreib nochmal

Lg

Hallo

das Problem ist vermutlich, dass die Arbeitsmappe nicht aktualisiert wird,

es sollte automatisch aktualisiert werden,

Gruß

Hallo,
diese Anfrage ist schwer zu beantworten, da nicht erkennbar ist, in welcher Sub der Code enthalten ist und wie er aktiviert wird. Normalerweise gibt es zu Objekten wie Optionsfeldern eine Reihe von Ereignisroutinen, z.B. _Click(), die beim Click auf das Optionsfeld aktiviert werden - da gehört der Code hin.
Viel Erfolg
Rainer

Hey bernd

versuch mal den makrorekorder aus. den starten, dann die gewünschten zellen (spalten) ausblenden und anschliessend wieder stoppen.
ebenfalls so ein makro erstellen, dass das ganze wieder einblendet.

dann brauchst du noch was, das merkt, wenn sich der inhalt der zelle oder des optionsfeld entsprechend verändert, und dadurch das makro gestartet wird.

bin leider nicht im büo zum was auszuprobieren.

gruss
m

Hallo

Erstmal wäre es toll die Excel Version zukennen, denn ab 2007 hat sich einiges geändert.
Was ich hier schreibe betrifft Excel 2007.

mit zwei Formularsteuerelementen
(Optionsfeld 155 & Optionsfeld 156). Je nachdem welches dieser
beiden Optionsfelder ich anklicke, bekomme ich in der Zelle
„N2“ eine Zahl angezeigt (1 oder 2)

Die Zelle Verknüpfung brauchst du nicht wirklich.

Ich möchte gerne erreichen, dass beim Auswählen des
Optionsfeldes 155 (wenn also in Zelle „N2“ eine 1 angezeigt
wird) die kompletten Spalten Z-EA automatisch ausgeblendet
werden.

Du hinter legst diese beiden Makros in einem Modul.

Sub Ausblenden_ZEA()

’ Ausblenden_ZEA Makro


Columns(„Z:EA“).Select
Selection.EntireColumn.Hidden = True
End Sub

Sub Einblenden_ZEA()

’ Einblenden_ZEA Makro


Columns(„Z:EA“).Select
Selection.EntireColumn.Hidden = False
End Sub

Und dann weißt du dem entsprechende Optionsfeld das richtige zu.

Ich hoffe dir geholfen zu haben.

Gruß
Michael

Sorry !!!
Habe die Excel Version im Betreff Übersehen. :wink:

Gruß
Michael

hallo derbernd,

ich kann dir nur mit excel 2003 weiterhelfen, sollte aber auch mit 2010 funktionieren

Sub Aus_Einblenden()
Select Case Worksheets(„Tabelle2“).Range(„N2“).Value
Case Is = 1
Columns(„Z:EA“).Hidden = True
Case Is 1
Columns(„Z:EA“).Hidden = False
End Select
End Sub

____________________________________________

zusätzlich bei BEIDEN optionsfeldern die zellverknüpfung N2 zuteilen (rechtsklick auf optionsfeld -> steuerung)
zusätzlich bei beiden das makro aktivieren

Hallo zusammen!

Ich habe von VBA leider keine Ahnung und bin bei meinem
Problem noch zu keiner Lösung gekommen.

Hallo Bernd,
versuchs mal damit:

If target = Range(„D8“) Then
Select Case target.Value
Case Is = 1
Range(Cells(1, 26), Cells(1, 131)).Select
Selection.EntireColumn.Hidden = True
Case Is 1
Range(Cells(1, 26), Cells(1, 131)).Select
Selection.EntireColumn.Hidden = False

mfg
Softoldi

Hallo Bernd,

du kannst den Options-Seuerelemente auch das entsprechende Makro zuweisen, um die gewünschten Aktionen auszuführen.

Gruß
Franz

'Diesen Code in einem allgemeinen Modul einfügen
'Das Modul ggf. im VBA-Editor zunächst für die Datei einfügen.
'Anschliessend den beiden Optionbuttons dieses Makro zuweisen \_
 (Rechte-Maustasten-Klick auf den Button, dann Makro auswählen)
'Den Namen des Makros kannst du nach deinen Vorstellungen anpassen.
Sub Spalten\_Ein\_Ausblenden()
 Dim wks As Worksheet
 Set wks = ActiveSheet
 Select Case wks.Range("N2").Value
 Case 1
 wks.Columns("Z:EA").Hidden = True
 Case 2
 wks.Columns("Z:EA").Hidden = False
 End Select
End Sub

Hallo DerBernd,

leider kann ich jetzt erst antworten (war im Urlaub).
Hier mein Vorschlag für das Problem(habe nur Z- AR ausgeblendet):

Option Explicit

Private Sub OptionButton1_Click()
Range(„N2“).Value = 1
If Range(„n2“) = 1 Then
Columns(„Z:AR“).Select
Selection.EntireColumn.Hidden = True
End If
End Sub

Private Sub OptionButton2_Click()
Range(„N2“).Value = 2
If Range(„n2“) = 2 Then
Columns(„Z:AR“).Select
Selection.EntireColumn.Hidden = False
Range(„N2“).Select
End If
End Sub

Gruß Hugo

Hallo,
mit diesem Code sollte es klappen:

Sub Optionsfeld155_BeiKlick()
Wert1 = Sheets(„Tabelle1“).Shapes(„Optionsfeld 1“).DrawingObject.Value
If Wert1 = 1 Then
Range(„N2“).Value = 1
End If
Call Spalten
End Sub

Sub Optionsfeld156_BeiKlick()
Wert2 = Sheets(„Tabelle1“).Shapes(„Optionsfeld 2“).DrawingObject.Value
If Wert2 = 1 Then
Range(„N2“).Value = 2
End If
Call Spalten
End Sub

Sub Spalten()
OptWert = Range(„N2“).Value
Select Case OptWert

Case Is = 1
Columns(„Z:EA“).Select
Selection.EntireColumn.Hidden = True

Case Is 1
Columns(„Z:EA“).Select
Selection.EntireColumn.Hidden = False

End Select
Range(„A1“).Select

End Sub

Gruß,
Ptonka

Feedback fehlt! Sehr schade!

Hallo Bernd,

du hast ja ausreichend Antworten erhalten. Aber leider hast du auf keine geantwortet, so bin ich jetzt froh, dass ich nur die Zeit für diese Zeilen investiere.

Gruß
Ramaka