Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1000to1004
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

Untergenze in VBA

Untergenze in VBA
11.08.2008 10:10:47
Axel
Hallo alle miteinander,
ich nicht weiß einfach nicht wie ich die Untergrenze Funktion in mein UserForm einbinden kann.
Kurze Erklärung:
Ich habe ein UserForm mit einem Drehfeld zum durchblättern der Zeilen, in Spalte 27 ist ein Zahlenwert mit zwei Kommastellen eingetragen, das nach jedem Drücken des Drehfeldes neu ausgelesen wird. Anhand dieses Wertes soll im UserForm die entsprechende Grafik (Name des Grafikobjektes im Userform lautet "rating") geladen werden. Die Bilder befinden sich im gleichen Verzeichnis wie die xls im Unterorder "bilder".
Die Namen der Bilder lauten "!_rating0.gif", "!_rating0,5.gif", "!_rating1.gif" usw, das geht hoch bis 10.
Es geht also um eine Bewertung in 0,5er Schritten (so nette kleine Sternchenbilder mit ganzen und halben Sternen). Und genau das ist mein Problem, ich habe folgende Lösung die schonmal funktioniert, allerdings wird dabei immer auf eine ganze Zahl aufgerundet und somit werden alle 0,5er bilder vernachlässigt:

Me.rating.Picture = LoadPicture(ThisWorkbook.Path & "\bilder\" & "!_rating" & Format(.Cells(Me.SpinButton1.Value, 27), "0") & ".gif")


ändert man die Formel so ab daß die erste Kommastelle berücksichtigt wird...


Me.rating.Picture = LoadPicture(ThisWorkbook.Path & "\bilder\" & "!_rating" & Format(.Cells(Me.SpinButton1.Value, 27), "0.0") & ".gif")

... müsste ich für jede Kommastelle ein bild haben damit es klappt, also "!_rating1,1.gif", "!_rating1,2.gif" usw.
Das Ganze muss doch aber auch eleganter gehen, denn es gibt doch die Funktion der Untergrenze wo man selbst die Sprünge bestimmen kann, wo der Wert dann entsprechend abgerundet wird, genau was ich also brauche:


=UNTERGRENZE(2,2;0,5) 

das z.B rundet dann auf 2 ab, sieht als aufgezeichnetes Makro so aus:


ActiveCell.FormulaR1C1 = "=FLOOR(2.2,0.5)"


Wie aber bekomme ich die Untergrenze Funktion in meine bisherige eingebaut so daß Me.SpinButton1.Value, 27 immer in 0,5er Schritten abgerundet wird?
Ich hoffe ihr habt ungefähr verstanden was mein Problem ist, für eine Antwort wäre ich sehr dankbar
MfG
Axel

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Untergenze in VBA
11.08.2008 10:21:00
Nepumuk
Hallo Axel,
warum arbeitest du da überhaupt mit Zellwerten? Nimm doch einfach den Wert des Spinbutton geteilt durch 2. Schon hast du 0,5er Schritte.
Gruß
Nepumuk

AW: Untergenze in VBA
11.08.2008 10:36:24
Axel
Das Rating wird aus der Zelle (AA) ausgelesen, da dort der Wert (0,00 bis 10,00) drinsteht und dieser Wert in jeder Zeile variiert. Das soll sozusagen der Bezug für die zu ladene Grafik werden.
übrigens
ThisWorkbook.Path & "\bilder\" & "!_rating"
kann man natürlich in
ThisWorkbook.Path & "\bilder\!_rating"
abkürzen, mein fehler :)

AW: Untergenze in VBA
11.08.2008 10:42:56
Nepumuk
Hallo Axel,
ok, ein Argument. Nächste Frage. Wozu benutzt du die Format-Funktion und nimmst nicht einfach den Zellwert? Da stehts doch richtig drin. Oder nicht?
Ich geb's ehrlich zu, so ganz verstanden hab ich das noch nicht. Was steht tatsächlich in den Zellen und welche Bildnummer soll zu welchem Zellwert angezeigt werden?
Gruß
Nepumuk

Anzeige
AW: Untergenze in VBA
11.08.2008 11:25:40
Axel
die format funktion nutze ich da somit der Wert aus Zelle AA auf eine natürliche Zahl ohne komma verkürzt (immer aufgerundet) wird.
darum erwähnte ich ja, das in der Zelle der Wert immer 2 kommastellen hat, nehmen wir mal als Beispiel: "2,23" dieser Wert wird mittels der formatfunktion auf "2" gerundet.
somit wird aus der funktion

Me.rating.Picture = LoadPicture(ThisWorkbook.Path & "\bilder\!_rating" & Format(.Cells(Me.SpinButton1.Value, 27), "0") & ".gif")


der bildlink generiert


"c:\test\bilder\!_rating2.gif"


Der Bildlink wiederum dient dazu um das Bild "c:\test\bilder\!_rating2.gif" in das Bild-Objekt "rating" auf dem Userform dynamisch zu laden. und somit sieht man nun das gif mit 2 sternen :)
Beim erneuten Klicken auf das Drehfeld wird die nächste Zeile ausgelesen
Wenn dort nun als Beispiel "3,13" in Zelle AA steht, wird dann das Bild "!_rating3.gif" geladen.

Anzeige
AW: Untergenze in VBA
11.08.2008 11:24:00
Erich
Hallo Axel,
probier mal

Sub tst()
Cells(1, 1).FormulaR1C1 = "=FLOOR(2.7,0.5)"
Cells(2, 1) = Application.Floor(2.7, 0.5)
Cells(3, 1) = WorksheetFunction.Floor(2.7, 0.5)
Cells(4, 1) = Application.WorksheetFunction.Floor(2.7, 0.5)
Cells(5, 1) = Fix(2.7 * 2) / 2
Cells(6, 1) = Int(2.7 * 2) / 2
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Untergenze in VBA
11.08.2008 11:51:52
Axel
ah vielen dank, wieder was gelernt :)
ich musste nur die eine Zeile wie folgt abändern:

Me.rating.Picture = LoadPicture(ThisWorkbook.Path & "bilder\!_rating" & Application.WorksheetFunction.Floor(.Cells(Me.SpinButton1.Value, 27), 0.5) & ".gif")


Vielen Dank

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige