Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

bestimmte Spalten ein- und ausblenden (VBA)
24.01.2010 16:55:43
Matthias

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

Die Datei https://www.herber.de/bbs/user/67447.xls wurde aus Datenschutzgründen gelöscht


3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bestimmte Spalten ein- und ausblenden (VBA)
24.01.2010 17:27:16
Matthias
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
AW: bestimmte Spalten ein- und ausblenden (VBA)
24.01.2010 18:51:49
Josef Ehrensberger
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
Anzeige

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige