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 InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

Nochmal an die Allgemeinheit

Betrifft: Nochmal an die Allgemeinheit von: Teddy
Geschrieben am: 07.01.2005 12:21:15

Hallo Alle,

hatte gestern wegen einer Sache gepostet und auch schon einen guten Tip erhalten. Allerdings entstand dabei ein Kompilierungsfehler. Vielleicht hat ja ein anderer von euch noch `ne gute Idee?

Das Problem ist folgendes.....

Mittels diesem Makro:

...Dim Blatt As Worksheet
For Each Blatt In ThisWorkbook.Worksheets
If Blatt.Name <> "Statistik" Then
'"Statistik" ist die Tabelle, die nicht aus/eingeblendet werden soll !
Blatt.Visible = Not Blatt.Visible
End If
Next...

ist es möglich, alle verborgenen Blätter einer Arbeitsmappe in einem Rutsch ein- bzw. auszublenden.

Mit der Zeit werden sehr viele Blätter in diese Mappe kopiert werden. Das bedeutet, irgendwann muß dieses Makro eine ganze Menge Blätter sichtbar- / unsichtbar machen. Möglicherweise geht dabei der betreffende Rechner in die Knie (Ist nicht mehr der neueste und schnellste seiner Zunft!).

Gibt es, um das zu vermeiden, eventuell die Möglichkeit, per Makro Excel explizit zu sagen, welche Blätter ein- oder ausgeblendet werden sollen?

Ich stelle mir das so vor:
Die Liste unter FORMAT BLATT EINBLENDEN wird angezeigt, der User trifft seine Auswahl (ein oder mehrere Blätter gleichzeitig) und die Blätter werden dann sichtbar gemacht. Das Problem ist nämlich, das der User nicht genau weiß, wie die einzelnen Blätter benannt sind und somit sollte er die oben erwähnte Liste als Auswahlkriterium nutzen können.

Diesbezüglich wurde mir schon ein Test-Makro zur Verfügung gestellt, welches aber, wie schon gesagt, einen Fehler beim Kompilieren macht.

Dieses Makro sieht so aus:

...Dim arrSplit, i As Integer, strTmp As String
strTmp = InputBox("Welche Blätter?" & vbLf & "(Nummern oder Namen durch , trennen.)")
arrSplit = Split(strTmp, ",")
For i = 0 To UBound(arrSplit)
If IsNumeric(arrSplit(i)) Then
Sheets(CInt(arrSplit(i))).Visible = Not Sheets(CInt(arrSplit(i))).Visible
Else
Sheets(arrSplit(i)).Visible = Not Sheets(arrSplit(i)).Visible
End If
Next i...

Der Fehler tritt hier auf:

arrSplit = Split(strTmp, ",") -- Beim Befehl "Split"!
Meldung: Sub / Function nicht definiert.

So - Das war`s. Sorry für die Menge an Text. Aber besser genau erklärt, als unnötig viel und oft nachgefragt.

Schon mal Danke im Voraus falls einer von euch helfen kann.


Teddy

  


Betrifft: Hat den keiner einer Idee? Megaschade... von: Teddy
Geschrieben am: 07.01.2005 13:35:16




  


Betrifft: Tabellenblätter ein/ausblenden per Makro von: Reinhard
Geschrieben am: 07.01.2005 13:43:31

Hi Teddy,
m.W. kennt Excel 8.0 nicht den Befehl Split, bei Version 9.0 ist er vorhanden.
Gruß
Reinhard


  


Betrifft: AW: Tabellenblätter ein/ausblenden per Makro von: Teddy
Geschrieben am: 07.01.2005 13:47:25

Wie blöde doch Excel ist, nicht wahr?!

Kommt ja auch von "Winzig Weich" (Micro Soft)

He he he ...


  


Betrifft: AW: Nochmal an die Allgemeinheit von: DieterB
Geschrieben am: 07.01.2005 13:39:53

Hallo Teddy(Bär) :-))))

Dim Split As....

gruß

DieterB


  


Betrifft: AW: Nochmal an die Allgemeinheit von: Teddy
Geschrieben am: 07.01.2005 13:45:35

Der Hinweis ist ja bestimmt lieb und ohne den erhobenen Zeigefinger gemeint.

Aber ohne Heu kann`s beste Pferd nit f.....

Will sagen; Was war damit wohl gemeint?!

Klär` mich auf!

@_@


  


Betrifft: Scheint nix zu werden..... von: Teddy
Geschrieben am: 07.01.2005 13:58:51

Tja..., so wie`s aussieht, werden Sie hier nicht geholfen.

Schade eigentlich...

Ô_Ô

Dennoch mal Danke.

Vielleicht kommt ja die Erleuchtung im Schlaf über mich.

Oder irgendwer hat doch noch den zündenden Einfall?!

Bis dann, Friends.


Teddy


  


Betrifft: AW: Nochmal an die Allgemeinheit von: DieterB
Geschrieben am: 07.01.2005 14:55:52

Hallo Teddy,

wenn dein Problem noch besteht,
hatte gerade jemanden eine Mappe auf den server gelegt,
mit einem ähnlichen Problem.
In deisem Thread hat Jinx einen Beitrag erstellt.
Schau dir aml den Code an.
Suchfeld Jinx.


  


Betrifft: Lösung mit Kontrollkästchen von: Reinhard
Geschrieben am: 07.01.2005 15:15:06

Hi Teddy,
schau mal ob das bei Excel 8.0 läuft, warum da KC rechts neben den Kontrollkästchen steht ist mir schleierhaft, ich stelle das als neue Frage hier ins Forum, musste da mal schauen ob jmd das wegbekommt.
Ansonsten, beim Dateiöffnen, werden alle Blätter bis auf Tabelle1 ausgeblendet, mit den Kästchen kannst du dann die anderen Blätter ein/ausblenden.

Datei: https://www.herber.de/bbs/user/15768.xls

Der verwendete Code in Modul1 steht nachfolgend, Beim Dateiöffnene wird die Sub ListeErstellen ausgeführt.
Gruß
Reinhard
Sub ListeErstellen()
Dim Zeile As Long
Zeile = 1
With Worksheets("Tabelle1")
    .Columns("A").ClearContents
    .Range("A1") = "Blattname"
    .Range("B1") = "Eingeblendet"
    For Each Kästchen In .Shapes
        Kästchen.Delete
    Next Kästchen
    For Each Blatt In ThisWorkbook.Worksheets
        If Blatt.Name <> "Tabelle1" Then
            Worksheets(Blatt.Name).Visible = False
            Zeile = Zeile + 1
            .Cells(Zeile, 1) = Blatt.Name
            .CheckBoxes.Add(.Cells(Zeile, 2).Left, .Cells(Zeile, 1).Top, 11.75, 11.75).Select
            Selection.Name = "Box" & Blatt.Name
            Selection.OnAction = "Auswerten"
        End If
    Next Blatt
    .Range("A1").Select
End With
End Sub

Sub Auswerten()
Worksheets(Mid(Application.Caller, 4)).Visible = Not (Worksheets(Mid(Application.Caller, 4)).Visible)
End Sub



  


Betrifft: AW: Nochmal an die Allgemeinheit von: Teddy
Geschrieben am: 07.01.2005 16:03:05

Vielen lieben & heißen Dank euch beiden!

Bin schon am daddeln.

Muß die Sache noch ein bißchen umgestalten, damit es zu meiner vorhandenen Tabelle paßt.

Danke!


Teddy


  


Betrifft: AW: Nochmal an die Allgemeinheit von: Reinhard
Geschrieben am: 07.01.2005 16:09:28

Hi Teddy,
das KC war der Anfang von Kontrollkästchen, DieterB wies mich daraufhin.
Ändere den Code von:

...
            Selection.OnAction = "Auswerten"
        End If
...

in:

...
            Selection.OnAction = "Auswerten"
            Selection.Characters.Text = ""
        End If
...

Gruß
Reinhard



  


Betrifft: AW: Nochmal an die Allgemeinheit von: Teddy
Geschrieben am: 07.01.2005 16:21:21

Momentaner Stand:

Sub ListeErstellen()
Dim Zeile As Long
Zeile = 1
With Worksheets("Tabelle1")
    .Columns("H").ClearContents
    .Range("H1") = "Blattname"
    .Range("I1") = "Eingeblendet"
    For Each Kästchen In .Shapes
        Kästchen.Delete
    Next Kästchen
    For Each Blatt In ThisWorkbook.Worksheets
        If Blatt.Name <> "Tabelle1" Then
            Worksheets(Blatt.Name).Visible = False
            Zeile = Zeile + 1
            .Cells(Zeile, 8) = Blatt.Name
            .CheckBoxes.Add(.Cells(Zeile, 9).Left, .Cells(Zeile, 1).Top, 11.75, 11.75).Select
                With Selection
                .Placement = xlMove
                .PrintObject = False
                End With
                    With Selection
                .Value = xlOff
                .LinkedCell = ""
                .Display3DShading = True
                End With
            Selection.ShapeRange.IncrementLeft 18#
            Selection.ShapeRange.IncrementTop -1.5
            Selection.ShapeRange.IncrementTop -0.75
            Selection.ShapeRange.IncrementLeft 3#
            Selection.Name = "Box" & Blatt.Name
            Selection.OnAction = "Auswerten"
            Selection.Characters.Text = ""
        End If
    Next Blatt
    .Range("A1").Select
End With
End Sub

Sub Auswerten()
Worksheets(Mid(Application.Caller, 4)).Visible = Not (Worksheets(Mid(Application.Caller, 4)).Visible)
End Sub


Sieht schon sehr gut aus!!!

Danke nochmal.

Ô_Ô


  


Betrifft: Noch was wichtiges! von: Teddy
Geschrieben am: 07.01.2005 19:01:04

Hai nochmal...

Geht das hier "For Each Kästchen In .Shapes" auch in Spalten? ".Columns" zum Beispiel?
Oder heißt das dann anders?

Ich habe nämlich noch zwei andere Schaltflächen im Blatt - Die werden dann auch gelöscht!

Nicht gut.

Thx & Ciao


Teddy


  


Betrifft: AW: Noch was wichtiges! von: Reinhard
Geschrieben am: 07.01.2005 21:47:51

Hi Teddy,
ungetestet, probiers mal in der Art:

For Each Kästchen In .Shapes
iF left(Kästchen.Name,3)="Box" Then
...
end if
Gruß
reinhard


  


Betrifft: AW: Noch was wichtiges! von: Teddy
Geschrieben am: 08.01.2005 01:28:30

Ey Reinhard - Bomben-Tip!

Jetzt geht es.

Vielen Dank!

Ô_Ô


Teddy