Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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

Drehfeld Bezug mit Max-Wert

Drehfeld Bezug mit Max-Wert
EarnyTolearny
Hallo Excelfreunde,
habe zwei Drehfelder die in 50iger-Schritten eine Auswahl festlegen, die aber maximal den 2 (aufgerundeten oder abgerundeten) Ergebnissen entsprechen dürfen.
Dachte das geht ganz einfach mit:
  • 
    Private Sub Worksheet_Activate()
    SpinButton1.Max = Range("C9").Value
    SpinButton2.Max = Range("E9").Value
    End Sub
    


  • Zuerst wollte ich die maximale Begrenzung in die Eigenschaft des Drehfeldes einbauen - geht auch nicht.
    Wäre nett, wenn sich mal jemand kurz meine Beispieldatei anschauen könnte. Vielen Dank.
    Gruß Werner
    https://www.herber.de/bbs/user/75267.xls
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 13:13:58
    Reinhard
    Hallo Werner,
    wenn man eine Mappe öffnet wird kein Worksheet_Activate durchgeführt. Du müßtest in Workbook_Open()
    erst Blatt2 aktivieren, dann Blatt1.
    Das hilft dir aber nicht groß denn dein Code ist falsch. Der gilt für ActiveX-Spinbutton (Steuerelementtoolbpx), du hast aber Spinbutton aus Formularsteuerfeld symbolleiste.
    Gehört in Modul von DieseArbeitsmappe:
    
    Private Sub Workbook_Open()
    With Worksheets("Tabelle1")
    .Shapes("Spinner 2").ControlFormat.Max = .Range("E9").Value
    .Shapes("Spinner 3").ControlFormat.Max = .Range("C9").Value
    End With
    End Sub
    

    Gruß
    Reinhard
    Anzeige
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 16:20:11
    EarnyToLearny
    Hallo Reinhard,
    haut voll hin. Mercy.
    Gruß Werner
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 17:54:35
    EarnyToLearny
    Hallo Reinhard,
    ich habe mich etwas zu früh gefreut. Auf der Seite auf der die zwei Drehkreuze eingebaut sind, stehen auch die beiden Ergebnisse, die die jeweiligen Höchtsgrenzen vorgeben.
    Sobald sich nun die Grenze reduziert, bleibt der Höchstwert von vorhin stehen. Müßte da nicht noch irgendwas dazu kommen, damit dies immer wieder bereinigt wird, ohne dass man das Tabellenblatt verlassen muß?
    Gruß Werner
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 18:30:13
    Beverly
    Hi Werner,
    verwende das Change-Ereignis des Tabellenblattes
    Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address
    Case "$C$9"
    ActiveSheet.Shapes("Spinner 3").DrawingObject.Max = Target
    Case "$E$9"
    ActiveSheet.Shapes("Spinner 2").DrawingObject.Max = Target
    End Select
    End Sub
    



    Anzeige
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 19:38:18
    EarnyToLearny
    Hallo Karin,
    sehr nett von Dir. Aber - it doesn't work! Sorry.
    Kannst Dir mal die kleine Datei anschauen? Huch und das vielleicht noch am Samstag Abend!
    Gruß Werner
    https://www.herber.de/bbs/user/75269.xls
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 20:08:54
    Josef

    Hallo Werner,
    ich würde es so lösen.
    ' **********************************************************************
    ' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
    ' **********************************************************************
    Option Explicit
    Private Sub Worksheet_Calculate()
      With Me.Shapes("Spinner 3")
        .DrawingObject.Max = Range("C9")
        If Range("C29") > .DrawingObject.Max Then Range("C29") = Range("C9").Value
      End With
      With Me.Shapes("Spinner 2")
        .DrawingObject.Max = Range("E9")
        If Range("E29") > .DrawingObject.Max Then Range("E29") = Range("E9").Value
      End With
    End Sub



    « Gruß Sepp »

    Anzeige
    Codetext=Replace(Codetext,29,26) :-)) o.w.T.
    11.06.2011 20:35:43
    Reinhard
    
    

    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 21:24:07
    EarnyToLearny
    Hallo Sepp,
    danke, funktioniert genau so wie das von Reinhard.
    Gruß Werner
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 20:29:33
    Reinhard
    Hallo Werner,
    Private Sub Workbook_Open()
    With Worksheets("Tabelle1")
    .Shapes("Spinner 2").ControlFormat.Max = .Range("E9").Value
    .Shapes("Spinner 3").ControlFormat.Max = .Range("C9").Value
    End With
    End Sub
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Sh.Name  "Tabelle1" Then Exit Sub
    Select Case Target.Address
    Case "$E$5"
    With Sh.Shapes("Spinner 2").ControlFormat
    .Max = Sh.Range("E9").Value
    .Value = Application.Min(.Value, .Max)
    End With
    Case "$C$5"
    With Sh.Shapes("Spinner 3").ControlFormat
    .Max = Sh.Range("C9").Value
    .Value = Application.Min(.Value, .Max)
    End With
    End Select
    End Sub
    

    Gruß
    Reinhard
    Anzeige
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 21:28:37
    EarnyToLearny
    Hallo Reinhard,
    funktioniert ebenfalls, wie das von User Sepp.
    Frage: Was bedeutet das "Sh." vor "Shapes" und warum kann das nicht auch im oberen Teil verwendet werden? (hoffe keine allzu unsinnige Frage)
    Gruß Werner
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 22:15:50
    Reinhard
    Hallo Werner,
    "normalerweise" gehören alle Makros, sie werden auch prozeduren genannt in Standardmodule, also Modul1, Modul2 usw.
    Jetzt kennt aber Excel/Vba auch Klassenmodule. Das sind Module worein bestimmte Prozeduren gehören die auf Ereignisse in der Klasse reagieren.
    Keine Sorge ich erklär das noch verständlicher.
    Merke dir einfach daß es in Excel-Vba verschiedene fest vorgebene Ereignisse gibt auf die Excel/Vba mit einer bestimmten prozedur AUTOMATISCH reagieren kann sofern die Prozedur im richtigen Modul steht UND den richtigen Namen hat.
    Nimm eine beliebige Mappe, gehe in den Editor, mach Doppelklick aus "Diese Arbeitsmappe".
    Oberhalb des Modulfensters siehst du einen Pfeil, klick darauf und wähle Workbook.
    Rechts davon ist noch ein Pfeil, klicke darauf dann siehst du die Auswahlliste aller Ereignisse auf die reagiert wird in dem Workbook, also der Mappe.
    Mache desgleichen im Modul von "tabelle1", da wählst du oben in der Mitte Worksheet aus.
    Danach weißt du was es alles so gibt.
    Jetzt mal an einem Beispiel ganz konkret. Klcke mal im Modul "Tabelle1" rechts auf "Change".
    Vba erstellt dir dann automatisch diesen Prozedurrumpf:
    Private Sub Worksheet_Change(ByVal Target As Range)
    End Sub
    

    Die Information die dir Excel dann für die Prozedur mitgibt ist das Objekt target, es ist die Zelle in der MANUELL (also nicht per Formel) ein Wert geändert wurde. Kann natürlich auch ein Zellbereich sein.
    Aus diesem Grund hat auch der Code von karin nicht funktiert. Sie "überwachte" C9, aber da steht nur die Formel, man/frau muß C5 überwachen.
    Wir nähern uns Sh :-)
    Wenn du wie oben gesagt dir mal alle Ereignisse anschaust so wirst du feststellen daß es manche doppelt gibt.
    Worksheet_Change ist im Modul "DieseArbeitsmappe" dann Workbook_SheetChange
    Wähle also Sheetchange im Modul DieseArbeitsmappe aus und du siehst:
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    End Sub
    
    Prinzipiell das Gleich in Bezug auf Target. Neu ist Sh. Das stellt die Tabelle dar in der die Änderung geschah.
    Jetzt klar wofür Sh steht?
    Und, um potentiellen Helfern in Foren nicht unnötig Zeit verschwenden zu lassen, bei sowas sage IMMER woher du da Steuerelemente hast, aus Formular oder Steuerelement.
    Oder um auch XL2007 kompatibel zu sein, benutze "Formular" und "ActiveX", dann wissen alle Bescheid.
    Gruß
    Reinhard
    Anzeige
    AW: Drehfeld Bezug mit Max-Wert
    12.06.2011 09:21:25
    EarnyToLearny
    Hallo Reinhard,
    bis jetzt gebe ich immer an: Excel gut - VBA bescheiden.
    Nach Deinem ausführlichen Bericht, den ich mir ausgedruckt habe und der nun an meiner Pinwand hängt, wird so einiges klar. Besonders der lezte Satz, dass immer angegeben werden soll, wo das Steuerelement steht, wird auf die Fahne geschrieben. Herzlichen Dank.
    Ich habe auf dem Rechner XL2003 und XL 2010 als Vollversionen. Arbeite aber immer noch mit 2003, und bekomme das mit "kompatibel" sicher jetzt in den Griff.
    Gruß Werner
    AW: Drehfeld Bezug mit Max-Wert
    11.06.2011 22:04:49
    Beverly
    Hi Werner,
    doch, der Code funktionert an sich schon korrekt, nur bin ich von deiner ursprünglich hochgeladenen Mappe ausgegangen, dass die Maximalwerte in Zeile 9 eingetragen werden sollen. Ändere in meinem Code "$C$9" in "$C$5" und "$E$9" in "$E$5" - dann funktioniert er auch in dieser Mappe, in der sich jetzt in Zeile 9 eine Formel befinde, die sich auf Zeile 5 bezieht.


    Anzeige
    AW: Drehfeld Bezug mit Max-Wert
    12.06.2011 09:12:46
    EarnyToLearny
    Hallo Karin,
    danke nochmal fürs nachschauen. Wenn ich die Bezugszelle ändere, dann nimmt er aber nur diese Zahlen, die nicht in 50iger Schritten erfolgen. Insofern waren die alten Zellen schon richtig. Habs aber jetzt gelöst.
    Gruß Werner
    AW: Drehfeld Bezug mit Max-Wert
    12.06.2011 18:52:00
    Reinhard
    Hallo Werner,
    ich glaube du hast etwas sehr wesentliches noch nicht verinnerlicht.
    Mit Ereigniscodes wie "Change" kannst du nur die MANUELLE Änderung in Zellen "überwachen" und der Code reagiert automatisch darauf.
    D.h., du mußt C5 (E5) "überwachen". Ändert sich dort was so setzt du das .Max der Spinner auf den Wert von C9 (E9).
    Gruß
    Reinhard
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige