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

Syntax check mit VBA in Excel

Syntax check mit VBA in Excel
21.11.2020 18:54:28
Werner
Hallo Leute,
Ich hoffe Ihr könnt mir helfen, da ich nicht einmal den ansatz wüste, wo bzw. wie ich in VBA anfangen soll.
Ich habe zB. folgende mögliche Eingabewerte:
S-59001640421-2019,Legacy Bill Adjustment 20% TAX,0.82
RG20200000776629,Legacy Bill Adjustment 10% TAX,-3.3
S-59001662039-2020,Legacy Bill Adjustment 10% TAX,18.9
S-59001786077-2020,Legacy Bill Adjustment 0% TAX,5
Ich bekomme solche Angaben von meinen Kollegen und muss diese an unseren Entwickler nach Indien weiterleiten.
Wie Ihr erkennen könnt, handelt es sich hier um Änderungen in Rechnungen (von Kunden).
Und da muss der Syntax passen, sonst gibt es blaue Wunder - Wenn zB. die Zahl nicht im englischen Format geschrieben wird - also beim Komma einen Punkt - Gewohnheitsbedingt machen viele wie ich auch einen Beistrich und dann hab ich plötzlich 18.900 statt 18,90 in der Rechnung korrigiert - Katastrophe - Aber jetzt zum Punkt:
Am Anfang steht die Rechnungsnummer. Beinhaltet diese ein / muss es ersetzt werden durch einen -
Sie darf keine Leerzeichen beinhalten.
Nach oder vor den beiden Beistrichen darf kein Leerzeichen sein und wenn in der Zahl am Schluss ein Komma vorkommt, muss dieser zu einem Punkt ersetzt werden.
Im mittleren Teil müssen ebenfalls die Leerzeichen eingehalten werden, was leider auch nicht immer der fall ist.
Ich komme aus der PHP Programmierung und habe etwas Erfahrung mit regex - Ich hab das Teil leider nie wirklich verstanden und das bereue ich jetzt.
Das iTüpfelchen:
Die Überprüfung soll in der Zeile geschehen, in der ich diesen Inhalt einfüge. So eine Schleife habe ich schon in VBA für einen Anderen Check - Also Zeile ist immer bekannt.
Wenn der Syntax nicht stimmt, wäre es toll, wenn die Zelle eingefärbt werden könnte.
Der Grund: Ich bekomme manches mal 20 Zeilen oder mehr mit solchen Inhalten und kopiere diese dann ins Excel wo ich dann 20 oder mehr Zeilen damit befüllt habe - und da wäre dann so eine Einfärbung super toll.
Das habe ich bereits:

Public Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim Zelle As Range
Dim bereich As Range
Dim Formel
Set KeyCells = Range("B2:B1048576")
Set bereich = Application.Intersect(KeyCells, Target)
If Not bereich Is Nothing Then
For Each Zelle In bereich
' Reihe = Zelle.Row
' Spalte = Zelle.Column
If Sheets("Adjustments").Range("B" & Zelle.Row).Value = "" Then
Sheets("Adjustments").Range("A" & Zelle.Row).Value = ""
Sheets("Adjustments").Range("G" & Zelle.Row).Value = ""
Else
' Aktuelles Datum einfügen
Sheets("Adjustments").Range("A" & Zelle.Row).Value = Date
' Syntax check
' Formel einfuegen - verursacht leider einen Laufzeitfehler
Formel = "=WECHSELN(TEIL(B1150;FINDEN('TAX';B" & Zelle.Row & ";1)+4;FINDEN('TAX' _
_
;B" & Zelle.Row & ";1));'.';',')*1"
Sheets("Adjustments").Range("G" & Zelle.Row).FormulaLocal = Formel
End If
Next
End If
End Sub

Ich hoffe, ich war jetzt nicht zu unverschämt und freu mich schon auf Feedback

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Syntax check mit VBA in Excel
21.11.2020 19:08:56
Oberschlumpf
Hi Werner,
dann zeig doch mal bitte, per Upload, eine Excel-Bsp-Datei, die eben z Bsp 20 Bsp-Datenzeilen mit sowohl richtigen als auch falschen Einträgen enthält.
Bei den falschen Einträgen sollten in 2 oder 3 Zeilen all die Fehler enthalten sein, die du hier beschrieben hast.
Es heißt die Syntax, nicht der Syntax...
Ciao
Thorsten
AW: Syntax check mit VBA in Excel
22.11.2020 08:04:13
ChrisL
Hi Werner
Der Fehler wird vermutlich hier verursacht:
...FINDEN('TAX';B" &...
...FINDEN(""TAX"";B" &...

...;""."";"","")...
Ich würde den Benutzer die Eingabe nicht im Text-Format machen lassen, sondern die Zahlenwerte in einer separaten Zelle abholen. Mittels Gültigkeitsprüfung überwachen, dass auch tatsächlich eine Zahl eingegeben wurde (im Landesformat des Benutzers). Erst zum Abschluss den String erzeugen und dabei wie gewünscht formatieren.
Ein Regex-String zur Prüfung könnte z.B. wie folgt aussehen:
"\D-\d{11}-\d{4},Legacy Bill Adjustment \d+% TAX,-?\d+[^,]"

\D  keine Ziffer
-  Bindestrich
\d{11}  11-stellige Ziffer
-  Bindestrich
\d{4}  4-stellige Ziffer
,Legacy Bill Adjustment  fixer Text
\d+  Ziffer unbestimmter Länge
% TAX,  fixer Text
-?  optional ein Minuszeichen
\d+  Ziffer unbestimmter Länge
[^,]  kein Komma

cu
Chris
Anzeige
AW: Syntax check mit VBA in Excel
22.11.2020 13:39:35
Werner
@Chris
Also an 2x Anführungszeichen wäre ich nicht gekommen. (...FINDEN(""TAX"";B" &...)
Genau das war es - Ich kenne in einigen Programmiersprachen dass ich ein \ voranstelle - also \"blabla\" - Aber gut soll sein, funktioniert und ich bin sehr dankbar für Deinen Hinweis!
Deinen Regex-String Vorschlag schau ich mir heute noch an und versuche das hinzubekommen.
Danke Dir schon mal und einen schönen Sonntag noch
lg Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige