Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Untergenze in VBA

Forumthread: 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

Anzeige

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 :)

Anzeige
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

Anzeige
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

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige