Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

bestimmte Spalten ein- und ausblenden (VBA) | Herbers Excel-Forum


Betrifft: bestimmte Spalten ein- und ausblenden (VBA) von: Matthias
Geschrieben am: 24.01.2010 16:55:43

Hi,

ich bräuchte ein wenig Hilfe zu folgendem Vorhaben:
In einer Liste, in der Identnummern für eine Maschine verwaltet werden, sollen bestimmte Spalten über ein Auswahlmenü ein- und ausgeblendet werden können. Dabei sollen bei Auswahl einer Maschinenbaugröße (von 110 bis 610) immer drei Spalten zu einer Baugröße stehen bleiben:
1. die Spalte, in der im Kopf (Zeile 3) die Baugröße steht (z.B. "110")
2. die Spalte, in der im Kopf die Baugröße steht gefolgt von einem "S" (z.B. "110S")
3. die Spalte, in der im Kopf die Baugröße steht gefolgt von einem "G" (z.B. "110G")
Die Spalten der anderen Baugrößen, die nicht angewählt sind, sollen ausgeblendet werden.
Dank der Hilfe aus diesem Forum hatte dies auch in einer anderen, ähnlich aufgebauten Tabelle schon so wie beschrieben geklappt, d.h. der Code und die Funktion in der angehängten Tabelle ist gegeben, es werden nur noch nicht die gewünschten Spalten eingeblendet. Mangels VBA-Erfahrung komme ich hier nicht weiter und hoffe, dass hier jemand den Code entsprechend anpassen kann.

Gruß und vielen Dank schon mal
Matthias

https://www.herber.de/bbs/user/67447.xls

  

Betrifft: AW: bestimmte Spalten ein- und ausblenden (VBA) von: Josef Ehrensberger
Geschrieben am: 24.01.2010 17:12:35

Hallo Matthias,

das sollte es tun.

https://www.herber.de/bbs/user/67448.xls


Gruß Sepp



  

Betrifft: AW: bestimmte Spalten ein- und ausblenden (VBA) von: Matthias
Geschrieben am: 24.01.2010 17:27:16

Hallo Josef,

wow, das ging schnell, perfekt! Kannst Du mir noch kurz sagen, an welchen Stellen Du den Code ändern musstest (oder die entsprechenden Stellen im VBA kommentieren)? Wäre nett, damit ich mir beim nächsten Mal selber helfen kann...

Matthias


  

Betrifft: AW: bestimmte Spalten ein- und ausblenden (VBA) von: Josef Ehrensberger
Geschrieben am: 24.01.2010 18:51:49

Hallo Matthias,

Private Sub CommandButton1_Click()
  Dim oCntrl As MSForms.Control
  Dim rng As Range
  Dim intC As Integer
  
  On Error Resume Next
  Application.ScreenUpdating = False
  With Sheets("Gesamtliste LMR")
    .Range(.Cells(1, .Range(strRange).Columns(1).Column + .Range(strRange).Columns.Count), _
      .Cells(1, .Cells(.Range(strRange).Row, Columns.Count).End(xlToLeft).Column)) _
      .EntireColumn.Hidden = True
    
    For Each oCntrl In Me.Controls
      If TypeOf oCntrl Is MSForms.CheckBox Then
        intC = Cint(Mid(oCntrl.Name, 3))
        .Columns(intC).Hidden = Not oCntrl.Value
        .Columns(intC - 1).Hidden = Not oCntrl.Value
        'neu
        .Columns(Application.Match(Left(oCntrl.Caption, 3) & "G", .Rows(3), 0)).Hidden = Not oCntrl.Value
        'alt
        ' If oCntrl.Value Then
        ' 'Gewichtsspalten suchen
        ' Set rng = .Rows(.Range(strRange).Row).Find(what:=oCntrl.Caption & "G", LookAt:=xlWhole)
        '
        ' If Not rng Is Nothing Then rng.EntireColumn.Hidden = False
        ' End If
      End If
    Next
    
  End With
  ActiveWindow.ScrollColumn = 3
  Application.ScreenUpdating = True
  Set rng = Nothing
  Unload Me
End Sub

Private Sub CommandButton2_Click()
  Unload Me
End Sub

Private Sub CommandButton3_Click()
  Dim oCntrl As MSForms.Control
  For Each oCntrl In Me.Controls
    If TypeOf oCntrl Is MSForms.CheckBox Then
      oCntrl.Value = True
    End If
  Next
End Sub

Private Sub CommandButton4_Click()
  Dim oCntrl As MSForms.Control
  For Each oCntrl In Me.Controls
    If TypeOf oCntrl Is MSForms.CheckBox Then
      oCntrl.Value = False
    End If
  Next
End Sub

Private Sub CommandButton5_Click()
  Dim oCntrl As MSForms.Control
  For Each oCntrl In Me.Controls
    If TypeOf oCntrl Is MSForms.CheckBox Then
      oCntrl.Value = Not oCntrl.Value
    End If
  Next
End Sub
Private Sub UserForm_Activate()
  Dim oCB As MSForms.CheckBox
  Dim rng As Range
  Dim intT As Integer, intL As Integer
  
  intL = 18
  
  For Each rng In Sheets("Gesamtliste LMR").Range(strRange)
    If rng.Column Mod 2 <> 0 Then
      Set oCB = Me.Controls.Add("Forms.CheckBox.1")
      
      intT = intT + 20
      
      If intT > 160 Then
        intT = 20
        intL = intL + 80
      End If
      
      With oCB
        .Caption = rng.Text
        .Top = intT
        .Left = intL
        .Height = 18
        .Width = 60
        .Value = Not rng.EntireColumn.Hidden
        .Name = "CB" & rng.Column
      End With
    End If
  Next
  
  Me.Width = intL + 85
End Sub




Gruß Sepp



Beiträge aus den Excel-Beispielen zum Thema "bestimmte Spalten ein- und ausblenden (VBA)"