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

VBA-Formel

VBA-Formel
Jakob
Hallo,
ich habe eine Formel in den VBA-Editor geschrieben die etwas länger ist. Zur besseren Übersicht würde ich sie im VBA auf mehrere Zeilen verteilen. Ist das möglich? Wenn ja was müsste ich beachten?
Danke und Gruß,
jakob
VBA-anweisungen per Unterstrich _ trennen
30.09.2009 16:59:14
NoNet
Hallo Jakob,
Du kannst eine VBA-Anweisung per Unterstrich (Leerzeichen + _) auf mehrere Zeilen aufteilen.
Beachte, dass die Trennung nur an festgelegten Stellen (z.B. nach öffnender Klammer, nach Objektpunkt oder an Leerzeichen zwischen Anweisungen etc.) möglich ist.
Hier ein Beispiel : 2x die gleiche Anweisung : EINZEILIG und MEHRZEILIG erstellt :
Sub Zeilen_in_VBA_per_Unterstrich_trennen() 'Anweisung 1 : Komplett in eine Zeile : MsgBox Sheets("Tabelle1").Range("A1").Value 'Anweisung 2 : Per Unterstrich _ auf mehrere Zeilen getrennt : 'Trennung immer nach Objektklammer oder nach Objektpunkt oder Leerzeichen möglich 'Jedoch nicht innerhalb konstanter Strings ! MsgBox Sheets("Tabelle1"). _ Range( _ "A1"). _ Value End Sub Gruß, NoNet
Anzeige
AW: VBA-anweisungen per Unterstrich _ trennen
30.09.2009 18:24:50
Jakob
Hallo NoNet,
ich bekomme es bei meiner Formel nicht hin. Wo kann ich hier einen Zeilenumbruch einbauen
Range("G11").FormulaR1C1 = _
"=IF(or((IF(ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0),"""",IF(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0,IF(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=0,"""",VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)))))=""luft"",(IF(ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0),"""",IF(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0,IF(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=0,"""",VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)))))=""lkw""),""x"",""""))"
Danke und Gruß,
Jakob
Anzeige
Umbruch in VBA-Anweisungen
30.09.2009 18:56:13
Erich
Hi Jakob,
etwa so:

Range("G11").FormulaR1C1 = _
"=IF(or((IF(ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0),"""",IF(MATCH(R6C7&"".""& _
R17C3,KunMat,0)>=0,IF(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=0,"""",VLOOKUP(R6C7&"".""& _
R17C3,VsArt,2,)))))=""luft"",(IF(ISERROR(MATCH(R6C7&"".""& _
R17C3,KunMat,0)>=0),"""",IF(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0,IF(VLOOKUP(R6C7&"".""& _
R17C3,VsArt,2,)=0,"""",VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)))))=""lkw""),""x"",""""))"
Du brauchst nur - an Stellen, an denen das möglich ist - Leerzeichen nund Unterstrich einzufügen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Umbruch in VBA-Anweisungen
01.10.2009 09:57:51
Jakob
Hallo Erich,
ich erhalte die Fehlermeldung
Fehler beim Kompilieren: Syntaxfehler
Gruß,
Jakob
'tschuldigung - war Mist
01.10.2009 10:38:09
Erich
Hi Jakob,
sorry, ich hatte das weder getestet noch genau genug hingesehen. Ganz so einfach ging es doch nicht.
So klappt es aber:

Range("G11").FormulaR1C1 = _
"=IF(or((IF(ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0),""""," & _
"IF(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0," & _
"IF(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=0,""""," & _
"VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)))))=""luft""," & _
"(IF(ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0),""""," & _
"IF(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0," & _
"IF(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=0,""""," & _
"VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)))))=""lkw""),""x"",""""))"

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: 'tschuldigung - war Mist
01.10.2009 11:43:01
Jakob
Hallo Erich,
ja jetzt klappt es mit den Zeilenumbrüchen. Also muß jede Zeile der Formel in Hochkommas eingesetzt werden. Leider ist meine Formel immer noch zu lang da damit das Problem mit der 256 Zeichen Beschränkung für die .FormulaR1C1-Funktion nicht gelöst wird.
Trotzdem vielen Dank für Deine Hilfe.
Gruß,
Jakob
Formula statt FormulaR1C1 ?
01.10.2009 11:47:02
Erich
Hallo Jakob,
vielleicht reicht es aus, wenn du von .FormulaR1C1 auf .Formula gehst? Aus R3C2 wird dann einfach B3.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Formula statt FormulaR1C1 ?
01.10.2009 15:18:55
Jakob
geht leider auch nicht "Anwendungs- oder objektdefinierter Fehler".
Gruß,
Jakob
Anzeige
AW: Formula statt FormulaR1C1 ?
01.10.2009 16:13:31
Erich
Hi Jakob,
postest du mal deine Formel als (deutsche) funktionierende Excelformel?
(Ich hab keine Lust, sie per Hand zu übersetzen, die hast sie ja sicher schon.)
Dann kann man besser sehen, wie man diese Formel von VBA eintragen lassen könnte.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Formula statt FormulaR1C1 ?
01.10.2009 17:20:21
Jakob
Hallo Erich,
das ist sehr nett von Dir. Hier die Excel-Formel.
=WENN(ODER((WENN(ISTFEHLER(VERGLEICH($G$6&"."&$C$17;KunMat;0)>=0);""; WENN(VERGLEICH($G$6&"."&$C$17;KunMat;0)>=0;WENN(SVERWEIS($G$6&"."&$C$17;VsArt;2;)=0;""; SVERWEIS($G$6&"."&$C$17;VsArt;2;)))))="luft";(WENN(ISTFEHLER(VERGLEICH($G$6&"."&$C$17;KunMat;0)> =0);"";WENN(VERGLEICH($G$6&"."&$C$17;KunMat;0)>=0;WENN(SVERWEIS($G$6&"."&$C$17;VsArt;2;)=0;""; SVERWEIS($G$6&"."&$C$17;VsArt;2;)))))="lkw");"x";"")
~f~
Ich hatte auch schon versucht die Zelladressen als Namen zu definieren, aber die Formel ist auch damit immer noch zu lang
~f~
=WENN(ODER((WENN(ISTFEHLER(VERGLEICH(LanMat;KunMat;0)>=0);"";WENN(VERGLEICH(LanMat;KunMat;0)> =0;WENN(SVERWEIS(LanMat;VsArt;2;)=0;"";SVERWEIS(LanMat;VsArt;2;)))))="luft"; (WENN(ISTFEHLER(VERGLEICH(LanMat;KunMat;0)>=0);"";WENN(VERGLEICH(LanMat;KunMat;0)>=0; WENN(SVERWEIS(LanMat;VsArt;2;)=0;"";SVERWEIS(LanMat;VsArt;2;)))))="lkw");"x";"")
Vielen Dank.
Gruß,
Jakob
Anzeige
kürzere Formel
01.10.2009 19:07:20
Erich
Hi Jakob,
jetzt hab ich mir die Formel mal genauer angesehen - und vermute, dass sie unnötig lang ist.
Warum prüfst du, nach
WENN(ISTFEHLER(VERGLEICH($G$6&"."&$C$17;KunMat;0)>=0);""
noch
WENN(VERGLEICH($G$6&"."&$C$17;KunMat;0)>=0
Wenn VERGLEICH keinen Fehler liefert, ist das Ergebnis doch immer > 0.
Mein Formelvorschlag:
 G
10 
11x

Formeln der Tabelle
ZelleFormel
G11=WENN(ISTZAHL(VERGLEICH($G$6&"."&$C$17;KunMat;0)) *((SVERWEIS($G$6&"."&$C$17;VsArt;2;)="luft") +(SVERWEIS($G$6&"."&$C$17;VsArt;2;)="lkw"))>0;"x";"")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Ich hoffe, die Formel funzt so wie du das brauchst. Genau kann ich das nicht testen - dazu müsste ich wissen,
wie sich die Bereiche KunMat und VsArt zueinander verhalten.
Hier die VBA-Anweisung dazu:

Sub Makro1()
Range("G11").Formula = _
"=IF(ISNUMBER(MATCH($G$6&"".""&$C$17,KunMat,0))*(" & _
"(VLOOKUP($G$6&"".""&$C$17,VsArt,2,)=""luft"")+" & _
"(VLOOKUP($G$6&"".""&$C$17,VsArt,2,)=""lkw""))>0,""x"","""")"
' oder
Range("G11").FormulaR1C1 = _
"=IF(ISNUMBER(MATCH(R6C7&"".""&R17C3,KunMat,0))*(" & _
"(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=""luft"")+" & _
"(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=""lkw""))>0,""x"","""")"
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige