Xls-Formel ZELLE('Format'; ...) in VBA

Grüezi

Kann mir jemand sagen, wie die Excel-Formel
=ZELLE(„Format“;A1)
in einem VBA-Makro lauten muss? - Excel 2003 / MS VB 6.5

Googeln hat mir nichts gebracht. Obwohl Google seinen Europa-Sitz in Zürich hat, versteht es kein Schweizerdeutsch :smile: Und auch mit Application.WorksheetFunction… bin ich nicht weiter gekommen.

Vielen Dank
Niclaus

Grüezi Niclaus,

Kann mir jemand sagen, wie die Excel-Formel
=ZELLE(„Format“;A1)
in einem VBA-Makro lauten muss? - Excel 2003 / MS VB 6.5

k.A., scheinbar wird „Zelle“ von Vba nicht unterstützt, vielleicht ginge es mit ExcecuteExcel4makros oder wie der Befehl heißt.
„bereich.Verschieben“ wird ja auch nihct unterstützt *glaub*

Googeln hat mir nichts gebracht. Obwohl Google seinen
Europa-Sitz in Zürich hat, versteht es kein Schweizerdeutsch

-)

Warum sollen die sich das Idiotikum (ich liebe das Wort *gggggg*) der dortigen Eingeborenen besorgen und alles umstellen? :smile:

Und auch mit Application.WorksheetFunction… bin ich
nicht weiter gekommen.

Ja, klappt nicht, wird auch bei Intellisense nicht mitgelistet.

Abgesehen von der o.g. evtl. Möglichkeit mit „ExcecuteExcel4makros“ könntest du die Formel mit .Formulalocal in eine Zelle schreiben, das Ergebnis speichern und den Zellinhalt wieder löschen.

Nachstehend ist eine Liste (aus XL2000) was das Ergebnis deiner Formel sein könnte, nun frage ich mich was du erreichen willst indem du dies in Vba irgednwie einbindest, was nützt dir das Ergebnis „C0-“?

Gruß
Reinhard

Tabellenblatt: [Mappe1]!Tabelle1
 │ A │ B │
───┼───────────────────────────────────────┼───────────────┤
 1 │ Format │ Rückgabewert │
───┼───────────────────────────────────────┼───────────────┤
 2 │ Standard │ "S" │
───┼───────────────────────────────────────┼───────────────┤
 3 │ 0 │ "F0" │
───┼───────────────────────────────────────┼───────────────┤
 4 │ #,##0 │ ",0" │
───┼───────────────────────────────────────┼───────────────┤
 5 │ 0 │ "F2" │
───┼───────────────────────────────────────┼───────────────┤
 6 │ #,##0,00 │ ",2" │
───┼───────────────────────────────────────┼───────────────┤
 7 │ $#,##0\_);($#,##0) │ "C0' │
───┼───────────────────────────────────────┼───────────────┤
 8 │ $#,##0\_);[Red]($#,##0) │ "C0-" │
───┼───────────────────────────────────────┼───────────────┤
 9 │ $#,##0,00\_);($#,##0,00) │ "C2" │
───┼───────────────────────────────────────┼───────────────┤
10 │ $#,##0,00\_);[Rot]($#,##0,00) │ "C2-" │
───┼───────────────────────────────────────┼───────────────┤
11 │ 0% │ "P0" │
───┼───────────────────────────────────────┼───────────────┤
12 │ 0,00% │ "P2" │
───┼───────────────────────────────────────┼───────────────┤
13 │ 0,00E+00 │ "S2" │
───┼───────────────────────────────────────┼───────────────┤
14 │ # ?/? oder # ??/?? │ "G" │
───┼───────────────────────────────────────┼───────────────┤
15 │ m/t/jj oder m/t/jj h:mm oder mm/tt/jj │ "D4" │
───┼───────────────────────────────────────┼───────────────┤
16 │ t-mmm-jj oder tt-mmm-jj │ "D1" │
───┼───────────────────────────────────────┼───────────────┤
17 │ t-mmm oder tt-mmm │ "D2" │
───┼───────────────────────────────────────┼───────────────┤
18 │ mmm-jj │ "D3" │
───┼───────────────────────────────────────┼───────────────┤
19 │ mm/tt │ "D5" │
───┼───────────────────────────────────────┼───────────────┤
20 │ h:mm AM/PM │ "D7" │
───┼───────────────────────────────────────┼───────────────┤
21 │ h:mm:ss AM/PM │ "D6" │
───┼───────────────────────────────────────┼───────────────┤
22 │ h:mm │ "D9" │
───┼───────────────────────────────────────┼───────────────┤
23 │ h:mm:ss │ "D8" │
───┴───────────────────────────────────────┴───────────────┘
Zahlenformate der Zellen im gewählten Bereich:
A1:A10,A14:A23,B1:B23
haben das Zahlenformat: Standard
A11
haben das Zahlenformat: 0%
A12
haben das Zahlenformat: 0,00%
A13
haben das Zahlenformat: 0,00E+00

Tabellendarstellung erreicht mit dem Code in FAQ:2363
Gruß
Reinhard

Hallo Reinhard

Kann mir jemand sagen, wie die Excel-Formel =ZELLE(„Format“;A1)
in einem VBA-Makro lauten muss? - Excel 2003 / MS VB 6.5

das Idiotikum (ich liebe das Wort *gggggg*)

Da liebst Du etwas, was es so nicht gibt. Ist das (D)eine Art platonischer Liebe? Du meinst das Idiotikon, oder?

Abgesehen von der o.g. evtl. Möglichkeit mit
„ExcecuteExcel4makros“ könntest du die Formel mit
Formulalocal in eine Zelle schreiben, das Ergebnis speichern
und den Zellinhalt wieder löschen.

Das ist eine Möglichkeit, an die ich nicht gedacht habe.

nun frage ich mich was du erreichen
willst indem du dies in Vba irgednwie einbindest, was nützt
dir das Ergebnis „C0-“?

Das verrate ich Dir gern! Ich bin darauf gestossen bei der Verarbeitung grösserer Datenmengen, die gemischt sind: Zahlen und Datum.

Angenommen in A1 steht: “03.09.2008“ und ich starte folgendes Makro: Das Ergebnis muss ich Dir nicht verraten.

Sub test()
a = Range(„A1“)
a = a * 1000
MsgBox a
End Sub

Ich möchte, dass der Zellinhalt nur dann mit 1000 multipliziert wird, wenn es sich um eine Zahl handelt. Wenn die Zelle eine Datumsangabe enthält, soll der Zellinhalt nicht verändert werden. Also etwa in der Art:

if dim a = date then a = a
else a = a * 1000

Ich hoffe, das ist einigermassen verständlich erklärt.
Danke für Deine Bemühungen und freundliche Grüsse
Niclaus

Grüezi Niclaus

willst indem du dies in Vba irgednwie einbindest, was nützt
dir das Ergebnis „C0-“?

Das verrate ich Dir gern! Ich bin darauf gestossen bei der
Verarbeitung grösserer Datenmengen, die gemischt sind: Zahlen
und Datum.

Wie sehen denn die Zahlen aus, wie das Datum?

Angenommen in A1 steht: “03.09.2008“

Das könnte ein Text oder aber ein Datum sein - eine Zahl wohl eher nicht, obschon man diese auch so formatieren könnte…

und ich starte folgendes
Makro: Das Ergebnis muss ich Dir nicht verraten.

Sub test()
a = Range(„A1“)
a = a * 1000
MsgBox a
End Sub

Ich möchte, dass der Zellinhalt nur dann mit 1000
multipliziert wird, wenn es sich um eine Zahl handelt. Wenn
die Zelle eine Datumsangabe enthält, soll der Zellinhalt nicht
verändert werden.

Versuche es mal wie folgt:

 a = Range("A1")
 If IsNumeric(a) Then
 a = a \* 1000
 End If

 MsgBox a


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Niclaus,

das Idiotikum (ich liebe das Wort *gggggg*)

Da liebst Du etwas, was es so nicht gibt. Ist das (D)eine Art
platonischer Liebe? Du meinst das Idiotikon, oder?

Ohne Brille sehen beide Wörter gleich aus :smile:

könntest du die Formel mit
Formulalocal in eine Zelle schreiben, das Ergebnis speichern
und den Zellinhalt wieder löschen.

Das ist eine Möglichkeit, an die ich nicht gedacht habe.

Behalte das mal im Auge, Zellen in einer Spalte mit vielen Daten abzuklappern dauert, zigfach schneller ist, oben in der ersten zelle eine Hilfspalte per makro eine Formel eintragen zu lassen, diese dann per makro „runterzuziehen“, die Formelergebnisse auszuwerten und die Hilfsspalte zu löschen.

Excelfunktionen sind mehrfachtausendmal schneller als Vba.

Angenommen in A1 steht: “03.09.2008“ und ich starte folgendes
Makro: Das Ergebnis muss ich Dir nicht verraten.

Ich kanns mir denken.
Mal was anderes, gehe mal im VB-Editor auf Extras-Optionen, irgendwo kannst du einstellen „Variablendeklarition erforderlich“, mach das bitte.

Ich möchte, dass der Zellinhalt nur dann mit 1000
multipliziert wird, wenn es sich um eine Zahl handelt.

Dann war „Zelle“ eine schlechte Wahl, besser wäre „istzahl()“ bzw. das was Thomas schrieb in Vba.

Gruß
Reinhard

Versuche es mal wie folgt:

a = Range(„A1“)
If IsNumeric(a) Then
a = a * 1000
End If
MsgBox a

Salü Thomas
Sehr gut! Vielen Dank!