Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Unterteilung

VBA Unterteilung
05.03.2008 22:46:00
Christian
Hallo zusammen,
ich suche einen eleganteren Weg als den unten aufgezeigten.
- wenn dblMax - wenn dblMax - wenn dblMax - wenn dblMax usw... bis dblMax Irgendwie muss es doch einen Algorithmus geben (mit Mod o.ä.), der diese Select Case Auflistung erspart...
ich seh mal wieder den Wald nicht. Für Hilfe wäre ich sehr dankbar.
Grüße
Christian

Sub Test()
Dim dblMax as Double
Dim dblPart as Double
'Bsp:
dblMax = 3.4
Select Case dblMax
Case Is 


11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Unterteilung
05.03.2008 22:59:00
Gerd
Hi,
deine Bedingungen sind schlicht falsch. Kleiner 1 z.B. ist doch auch kleiner 10 und
auch kleiner 100, oder?
mfg Gerd

AW: VBA Unterteilung
05.03.2008 23:07:00
Christian
Hallo Gerd,
Nein, die Bedingungen sind nicht falsch!
Schließlich wird bei Select Case von oben nach unten abgearbeitet, deshalb stehen die kleinen Werte ja auch oben.
Probier den Code doch aus.
Christian

Hast Recht! oT
05.03.2008 23:28:23
Gerd
ot

AW: VBA Unterteilung
05.03.2008 23:37:00
Christian
dann setze doch bitte den Thread auf Offen...
Christian

AW: VBA Unterteilung
05.03.2008 23:08:00
Daniel
Hi
du könntest die Werte in einer Tabelle ablegen und dann wie in Excel mit dem SVERWEIS darauf zugreifen:

dblPart = WorksheetFunction.VLookUp(dblMax,Sheets(yyy).Range(xxx), 0)


Gruß, Daniel

Anzeige
AW: VBA Unterteilung
05.03.2008 23:21:42
Christian
Hallo Daniel,
vielen Dank für den Tipp. Aber der gepostete Code ist nur ein Ausschnitt von meinem Projekt.
Eine Auslagerung in Tabellen halte ich hier nicht für geeignet.
ich suche eigentlich nur eine kürzere Schreibweise für das Problem:
"kleiner gleich 1, 2, 5, 10, 20, 50, ..., 100000 - nimm 1/10 dieser Grenzen"
viele Grüße
Christian

AW: VBA Unterteilung - noch offen
05.03.2008 23:22:00
Christian
Häkchen "Frage noch offen" vergessen...
Christian

AW: VBA Unterteilung
06.03.2008 00:01:00
Daniel
Hi
mal so als Denkansatz:

Sub umwandeln()
Dim dblMax As Double
Dim strA As String
Dim dblPart As Double
dblMax = 2
strA = Format(WorksheetFunction.RoundDown(dblMax * 10, 0), 0)
Select Case Left(strA, 1)
Case 1
dblPart = 2
Case 2, 3, 4
dblPart = 5
Case Else
dblPart = 10
End Select
dblPart = dblPart * 10 ^ (Len(strA) - 3)
End Sub


Halt allerdings den kleinen Haken, daß die Bedingungn nicht mehr KLEINER GLEICH, sondern KLEINER ist, dh ein Wert von genau 5 bekommt bei dieser Berechnungsmethode schon den Wert 1 zugewiesen, bei dir würde genau 5 noch die 0,5 bekommen.
Gruß, Daniel

Anzeige
AW: VBA Unterteilung
06.03.2008 01:37:00
fcs
Hallo Christian,
nach einem längeren Kampf mit der Rechengenauigkeit der Log-Funktion in Excel -
Int(Log(dblMax)/Log(10#))
liefert leider nicht immer korrekt die 10er-Potenz der Zahl- und ich nach einigen anderen erfolglosen Klimmzügen den Umweg über die Text-Funktionen gefunden hatte kann ich dir folgendes anbieten:

Sub Test1()
Dim dblMax As Double
Dim dblPart As Double
Dim intLog10 As Integer
'Bsp:
dblMax = 499
If dblMax 


Gruß
Franz

vielen Dank
06.03.2008 10:18:00
Christian
Hallo Franz,
vielen Dank. Das sieht schon sehr gut aus. Auf den Logarithmus wäre ich nicht gekommen.
Auch an Daniel danke.
Grüße
Christian

Anzeige
noch 'ne kleine Anpassung
06.03.2008 15:41:12
Christian
hier meine Lösung ausgehend von Franz' Code....für's Archiv:
Grüße
Christian

Sub Test1()
Dim dblMax As Double
Dim dblPart As Double
Dim intLog10 As Integer
'Bsp:
dblMax = 3.4
If dblMax > 0 Then
intLog10 = Int(Log(dblMax) / Log(10#))
Select Case dblMax / 10 ^ intLog10
Case Is 


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige