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

Typkonvertierung bei Parameterübergabe

Typkonvertierung bei Parameterübergabe
12.07.2021 11:14:34
Joerg
Hallo,
ich brauche mal wieder einen Tritt.
Ich baue gerade einen Bot, der eine Excel-Tabelle ausfüllen soll. Das Problem, die Zahlen werden in Excel als Text eingetragen.
Nun habe ich mir ein Macro gebaut und lasse dieses durch den Bot aufrufen.:

Sub TextToNumber()
Range("KL13").NumberFormat = "0"
Range("KL13").Value = Range("KL13").Value
End Sub
funktioniert wunderbar.
Ich muß aber die Zellen per Parameter übergeben:

Sub TextToNumber(ByVal Zelle As Range)
Range(Zelle).NumberFormat = "0"
Range(Zelle).Value = Range(Zelle).Value
End Sub
Funktioniert nicht, weil der Parameter wieder Text ist. Wie kann ich nun den Text empfangen und diesen in die Range "Zelle" konvertieren?
LG Jörg

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:20:46
Nepumuk
Hallo Jörg,
so:

Sub TextToNumber(ByRef Zelle As Range)
Zelle.NumberFormat = "0"
Zelle.Value = Zelle.Value
End Sub
Gruß
Nepumuk
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:32:03
Joerg
Hi,
vielen Dank für die superschnelle Antwort, aber Automation Anywhere schreibt folgenden Error:
Unable to execute excel macro due to argument data type mismatch.
Kommt der, weil das Makro den Parameter als Text empfängt?
Gruß Jörg
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:34:54
Nepumuk
Hallo Jörg,
wie sieht denn der Aufruf der Sub aus?
Gruß
Nepumuk
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:45:13
Joerg
Der Aufruf erfolgt aus Automation Anywhere heraus:
Excel: Run Excel Macro "Tabelle7.TextToNumber arguments "$Datumspalte$13. Session: Default
schätze das bringt Dich nicht weiter.
Anzeige
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:50:29
Nepumuk
Hallo Jörg,
das kenne ich nicht. Ich lass die Frage offen.
Gruß
Nepumuk
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:54:53
Daniel
so wie es aussieht, übergibst du hier nicht die Zelle selbst (das Range-Objekt) sondern nur die Adresse, also einen Textstring.
Dann so:

Sub TextToNumber(ByVal Zelle As String)
Range(Zelle).NumberFormat = "0"
Range(Zelle).Value = Range(Zelle).Value
End Sub
Gruß Daniel
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 12:02:04
Joerg
Ach, Sorry,
das "as String" hatte ich nicht gleich gesehen. Jetzt läuft es.
Vielen Dank !!!
Gruß Jörg
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:21:23
Oberschlumpf
Hi Jörg,
du solltest nicht nur das (Anzeige)Format eines Wertes ändern, sondern du musst vor allem den Datentyp eines Wertes ändern.

Range(Zelle).Value = CInt(Range(Zelle).Value)
oder
Range(Zelle).Value = CDbl(Range(Zelle).Value)
oder
Range(Zelle).Value = CLng(Range(Zelle).Value)
Was genau CInt, CDbl + CLng bedeutet, findest du in der Excel-Hilfe und/oder in Google.
Entsprechend der Höhe der Werte, die du verarbeiten willst, wähle die richtige Datentypumwandlung (deswg mein "oder")
Hilfts?
Ciao
Thorsten
Anzeige
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:39:49
Joerg
Hallo Thorsten,
danke für den Tip. Ich denke das ersetzt die Zeile:
Range(Zelle).Value = Range(Zelle).Value
von der ich dachte, das sie genau dies tut ....oder?
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:51:08
Daniel
Genau so tut das auch.
Die C-Funktionen brauchst du hier nicht.
Gruß Daniel
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:55:32
Oberschlumpf
Daniel, erklär mal bitte
A1 = "12,50" = Text
A1 = Format(A1, "0") = "13" = noch immer Text
A1 = Format(CInt(A1), "0") = 13 = Zahlenwert, Typ Integer
Oder?
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 13:06:24
Daniel
Erklärmal, was ich erklären soll.
Ich verstehe deine wirre Zusammenstellung nicht.
.Value = .Value wandelt Formel in Festwert. Ob jetzt String oder Zahl ist doch egal, warum sollte man sich das festlegen?
Außerdem, bei .Value = .Value wird die Typkonvertierung automatisch durchgeführt, dh ein Formelergebnis "13" wird dabei automatisch zur Zahl 13, der Text "" zur echten Leerzelle.
Das unterscheidet .Value = .Value von .Copy + .PasteSpecial xlpastevalus.
Gruß Daniel
Anzeige
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 13:58:19
Joerg
Ich habe jetzt beide Versionen getestet. Beide funktionieren bei mir. Da ich aber mit .value=.value
flexibler bin, ist das die Lösung meiner Wahl.
Doch wie das mit der Automatik so ist, ich kann mir vorstellen, dass die nicht immer funktioniert (ohne das nötige Hintergrundwissen zu haben) und dann ist's gut zu wissen, wie man Excel ein wenig "zwingen" kann.
Ich danke euch nochmal für eure Hilfe
Gruß Jörg
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 14:28:43
Daniel
Zwingen zu was?
Die automatische Typkonvertierung funktioniert immer, ausser du hast das Zahlenformat Text.
Problematisch wirds bei .Value = .Value nur, wenn das Formelergebnis ein Text ist, der eine Dezimalzahl nach deutschem Schema darstellt, also "1,23". Das wird nicht richtig konvertiert, weil die automatische Typkonvertierung über VBA ausgelöst, immer mit den amerikanischen Schreibweisen arbeitet und den Punkt als Dezimalzeichen erwartet.
In dem Fall wäre es notwendig, mit Cdbl zu konvertieren, weil das auch in VBA die Einstellung der Länderversion verwendet (in Deutschland Komma)
Allerdings gibt das dann einen Fehler, wenn dann ein Text das Formelergebnis ist, welcher nicht konvertierbar ist, dh. für eine saubere Programmierung müsste man vorher mit IF Isnumeric(Range...).Value prüfen, ob das Formelergebnis in eine Zahl wandelbar ist.
Die einfachste und flexiblste Lösung für diesen Fall wäre:

Range(...).FormulaLocal = Range(...).value
Weil mit .FormulaLocal auch die Landestypischen Schreibweisen für die Konvertierung verwendet werden.
Gruß Daniel
Anzeige
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 11:53:09
Oberschlumpf
Hi Jörg,
Zitat: "von der ich dachte, das sie genau dies tut ....oder?"
Nein, und wenn du es ausprobiert hättest, dann hättest du diese Frage nicht stellen müssen.
Ich bin auch raus - weiter viel Erfolg!
Ciao
Thorsten
AW: Typkonvertierung bei Parameterübergabe
12.07.2021 12:09:09
Joerg
Thorsten,
ich hatte die Zeile ersetzt !
Das war nur, BEVOR das Macro überhaupt lief und steht immer noch drin.
Gruß Jörg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige