1.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich habe heute eine Frage über Spinbuttos und wie man damit Zeilen ein und ausblendet heute mal nicht einfügen und löschen. :-)

folgendes Szenario:

-fester Bereich: Zeile 1 - 7

-ein/auszublendender Bereich: Zeilen 8 - 21

-Zeilen 8 - 21 sind ausgeblendet

SpinDown: Zeilen anzeigen bei jedem neuen klick

8-9 Anfang 1. Klick
10-11 2. Klick
12-13 3. Klick
14-15 4. Klick
16-17 5. Klick
18-19 6. Klick
20-21 Ende 7. Klick

SpinUp: Zeilen ausblenden bei jedem neuen klick

8-9 Ende 7. Klick
10-11 6. Klick
12-13 5. Klick
14-15 4. Klick
16-17 3. Klick
18-19 2. Klick
20-21 Anfang 1. Klick

Es werden also immer 2 Zeilen ein/ausgeblendet. Ich fange also mit dem einblenden bei 8-9 an und höre bei 20-21 auf, beim ausblenden soll es mit 20-21 anfangen und mit 8-9 wieder aufhören.
Ich habe zwar den ein oder anderen Codeschnipsel im Netzt gefunden nur funktionierten die leider nicht so wie ich es benötige.

Vielleicht hat jemand von euch ein Plan wie man das in VBA umsetzem kann.

Hab mal meine Testdatei angehangen

https://www.dropbox.com/s/htx68cimdvgl82z/spinb1.xlsm?dl=0

Gruß
energun222

P.S.

schönen Ostermontag noch.

17 Antworten

+1 Punkt
Beantwortet von beverly_ Experte (3.4k Punkte)

Hi,

hast du den Code an sich denn schon mal getestet? Die Anzeige in der TextBox/Zelle A9 ist doch erstmal Nebensache, denn das kann man dann anpassen, wenn der Coder erstmal das macht was du erreichen willst.

Bis später, Karin

Übrigens heiße ich Karin und nicht Katrin... wink

0 Punkte
Beantwortet von vernichter Mitglied (261 Punkte)

Hi Karin aka beverly, :-)

ja funktioniert super.

Gruß

+1 Punkt
Beantwortet von beverly_ Experte (3.4k Punkte)

Hi,

wenn in der TextBox die Zahlen 3 bis 10 stehen sollen, dann ergänze in allen 3 Prozeduren die folgende Codezeile

       TextBox1 = .Range("A9") + 3

Ich gehe mal davon aus, dass die Zahl in A9 uninteressant ist.

Noch ein Tipp am Rande: ich würde nicht das Selection_Change-Ereignis zum Aufrufen des UserForms verwenden sondern das Doppelklick-Ereignis. Das hat den Vorteil, dass man 1. die Zelle nicht erst verlassen muss um sie dann neu anklicken zu können und 2. wird dadurch verhindert, dass das UserForm unerwünscht aufgerufen wird, wenn man versehentlich in die Zelle klickt.

Bis später, Karin

0 Punkte
Beantwortet von vernichter Mitglied (261 Punkte)

Hi Karin aka beverly,

das mit dem Doppelklick hatte M.O. ja auch schon geschrieben und ist auf jeden Fall besser. Ich habe das ganze mal in die richtige Tabelle gepackt und eigentlich funktioniert es auch so wie es soll ich habe aber einen Spediteur wo auch mal 30 LKW kommen könnten.

Mit dem Doppelklick in A90 öffnet sich die Userform es werden bei allen Textboxen die richtige Anzahl an LKW angezeigt. In A91 wird 7 angezeigt + 3 sind 10 also alles richtig in der Textbox. Wenn ich in der Userform den SpinButton5 nach unten drücke blendet es mir gleich mehrer ein und beim ausblenden die falschen Zeilen aus.

In dieser Spinbutton hat also min 10 und max 30 aber selbst wenn ich das einstelle kommt der obige fehler.

Ich blick da grad nicht mehr durch denn bei den anderen funktioniert das problemlos.

https://www.dropbox.com/s/p8qb2yklyd9pj02/Test_3.xlsb?dl=0

Wie gesagt geht es nur um den SpinButton 5 der nicht so recht will. Könntest bitte noch einmal drüber schauen?

Gruß

+1 Punkt
Beantwortet von beverly_ Experte (3.4k Punkte)

Hi,

vom rein logischen Standpunkt und deiner Beschreibung aus müsste dein Code für diesen SpinButton so lauten:

Private Sub SpinButton5_SpinDown()
    With ActiveSheet
        If .Range("A91") = 30 Then Exit Sub
        .Rows(94 & ":" & 95 + 2 * .Range("A91").Value).Hidden = False
        .Range("A91").Value = .Range("A91").Value + 1
        TextBox5 = .Range("A91") + 3
        SpinButton5.Value = .Range("A91")
    End With
End Sub

Private Sub SpinButton5_SpinUp()
    With ActiveSheet
        If .Range("A91") = 7 Then Exit Sub
        .Rows(92 + 2 * .Range("A91").Value & ":" & 93 + 2 * .Range("A91").Value).Hidden = True
        .Range("A91").Value = .Range("A91").Value - 1
        TextBox5 = .Range("A91") + 3
        SpinButton5.Value = .Range("A91")
    End With
End Sub

ich verstehe nur nicht ganz, weshalb die Sub bei 7 verlassen werden muss und nicht bei 0 wie bei den anderen SpinButton.


Bis später, Karin

0 Punkte
Beantwortet von vernichter Mitglied (261 Punkte)

Hi Karin aka beverly,

bei diesem einen Spediteur kommen meistens 10 LKW deshalb wollt ich das so voreinstellen.

Private Sub SpinButton5_SpinDown()
    With ActiveSheet
        If .Range("A91") = 27 Then Exit Sub
        .Rows(108 & ":" & 109 + 2 * .Range("A91")).Hidden = False
        .Range("A91").Value = .Range("A91").Value + 1
        TextBox5 = .Range("A91") + 1
        SpinButton5.Value = .Range("A91")
    End With
End Sub

Private Sub SpinButton5_SpinUp()
    With ActiveSheet
        If .Range("A91") = 7 Then Exit Sub
        .Rows(106 + 2 * .Range("A91").Value & ":" & 107 + 2 * .Range("A91").Value).Hidden = True
        .Range("A91").Value = .Range("A91").Value - 1
        TextBox5 = .Range("A91") + 1
        SpinButton5.Value = .Range("A91")
    End With
End Sub

Ich verstehe den Code so:

geh bei 27 raus weil 27+3 gleich 30 in der Textbox. Max in dieser Textbox 30 gleich 30 LKW

geh bei 7 raus weil 7+3 gleich 10 in der Textbox. Min in der Textbox 10 gleich 10 LKW

Hatte gedacht das des für mich leichter anzupassen ist weshalb ich da nicht näher drauf eingegangen bin.

Gruß

0 Punkte
Beantwortet von vernichter Mitglied (261 Punkte)

Hi Karin aka beverly,

so scheint es jetzt zu funktionieren.

Private Sub SpinButton5_SpinDown()
    With ActiveSheet
        If .Range("A91") = 27 Then Exit Sub
        .Rows(94 & ":" & 95 + 2 * .Range("A91").Value).Hidden = False
        .Range("A91").Value = .Range("A91").Value + 1
        TextBox5 = .Range("A91") + 3
        SpinButton5.Value = .Range("A91")
    End With
End Sub

Private Sub SpinButton5_SpinUp()
    With ActiveSheet
        If .Range("A91") = 7 Then Exit Sub
        .Rows(92 + 2 * .Range("A91").Value & ":" & 93 + 2 * .Range("A91").Value).Hidden = True
        .Range("A91").Value = .Range("A91").Value - 1
        TextBox5 = .Range("A91") + 3
        SpinButton5.Value = .Range("A91")
    End With
End Sub

SpinButton5.Min = 0
        SpinButton5.Max = 27

 Werd aber noch ein bissl probieren so richtig durchsteigen tuh ich noch nicht :-) und des wurmt mich extrem.

Bis hierher erstmal recht herzlichen Dank

Gruß

...