Anzeige
Archiv - Navigation
1360to1364
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 Code verschlanken

VBA Code verschlanken
19.05.2014 09:12:38
Mara
Hallo zusammen,
ich bin gerade dabei ein VBA Makro auf die Beine zu stellen. Ich habe mehrere Bedingungen die abgefragt werden. Jedoch wird der Code dadurch sehr lang und ich komme durcheinander. Kann ich untenstehenden Code ein wenig verschlanken?
If Doku(25)  PusHist(1) And Doku(25)  PusHist(2) And Doku(25)  PusHist(3) And Doku(25)  PusHist(4) And Doku(25)  PusHist(5) And Doku(25)  PusHist(6) And Doku(25)  PusHist(7) And Doku(25)  PusHist(8) And Doku(25)  PusHist(9) And Doku(25)  PusHist(10) And Doku(25)  PusHist(11) And Doku(25)  PusHist(12) And Doku(25)  PusHist(13) And Doku(25)  PusHist(14) And Doku(25)  PusHist(15) And Doku(25)  PusHist(16) And Doku(25)  PusHist(17) And Doku(25)  PusHist(18) And Doku(25)  PusHist(19) And Doku(25)  PusHist(20) Then WriteSt AnDat(25), OutputWorkBook, OutputWorkSheet, mrow, 29
MfG
Mara

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code verschlanken
19.05.2014 09:33:35
Nepumuk
Hallo,
wenn PusHist ein Array mit genau den 20 Einträgen ist, dann so:
Public Sub Beispiel()
    
    Dim strComparison As String
    
    strComparison = Chr$(255) & Join(PusHist, Chr$(255)) & Chr$(255)
    
    If InStr(1, strComparison, Chr$(255) & Doku(25) & Chr$(255)) = 0 Then _
        Call WriteSt(AnDat(25), OutputWorkBook, OutputWorkSheet, mrow, 29)
    
End Sub

Gruß
Nepumuk

Anzeige
AW: VBA Code verschlanken
19.05.2014 09:36:35
Daniel
Hi
beispielsweise so, wenn alle Werte von PusHist ausgeschlossen werden sollen:
If VarType(Application.Match(Doku(25), PusHist, 0))  vbError Then
hier dein Code
End IF

oder so, wenn nur bestimmte Elemente von PusHist ausgeschlossen werden sollen:
Select Case Doku(25)
Case PusHist(1), PusHist(2), Pushist(3), ...
Case Else
hier dein Code
End Select
Gruß Daniel

AW: VBA Code verschlanken
19.05.2014 09:49:22
Mara
Ok, danke erstmal für die schnellen Antworten. Jedoch dachte ich eher an so eine Lösung:
If Doku(25)  (PusHist(1), PusHist(2), PusHist(3), .. etc .. ) Then 
oder so
If Doku(25)  PusHist(1) And PusHist(2) And PusHist(3) .. etc .. Then 

Geht das so?
Hintergrund: Mit dem Makro lese ich Transit Daten aus einem externen Logistik Program aus (via GetSr Befehl).
Und nun möchte ich ausschliessen, dass ich doppelte Transiteingänge verbuche, das wäre nämlich tödlich. Dazu lese ich noch weitere Masken aus, nämlich die History, wo schon verbuchte Dokumente erfasst werden.
Ich hoffe das ist einigermaßen verständlich.
Gruß
Mara

Anzeige
AW: VBA Code verschlanken
19.05.2014 09:57:43
Daniel
Hi
nein, das geht so nicht.
Gruß Daniel

AW: VBA Code verschlanken
19.05.2014 09:40:39
Hajo_Zi
Hallo Mara,
Sub n()
Select Case Doku(25)
Case Is  PusHist(1), Is  PusHist(2), Is  PusHist(3), Is  PusHist(4), Is   _
PusHist(5), Is  PusHist(6), Is  PusHist(7), Is _
 PusHist(8), Is  PusHist(9), Is  PusHist(10), Is  _
PusHist(11), Is  PusHist(12), Is  PusHist(13), Is  PusHist(14), Is   _
PusHist(15), Is _
 PusHist(16), Is  PusHist(17), Is  PusHist(18), Is  PusHist(19), Is   _
PusHist(20)
WriteSt AnDat(25), OutputWorkBook, OutputWorkSheet, mrow, 29
End Select
' oder
Dim BoVor As Boolean
Dim InI As Integr
For InI = 1 To 20
If Doku(25) = PusHist(InI) Then
BoVor = True
Exit For
End If
Exit For
If BoVor = False Then
WriteSt AnDat(25), OutputWorkBook, OutputWorkSheet, mrow, 29
End If
End Sub

Anzeige
AW: VBA Code verschlanken
19.05.2014 09:57:50
Tino
Hallo,
nicht getestet evtl. so.
If Not IsNumeric(Application.Match(Doku(25), pusHist, 0)) Then
WriteSt AnDat(25), OutputWorkBook, OutputWorkSheet, mrow, 29
End If
Gruß Tino

AW: VBA Code verschlanken
19.05.2014 11:35:12
Mara
Hat Prima funktioniert! :-D
Danke an alle!
Gruß
Mara

AW: VBA Code verschlanken
19.05.2014 12:19:42
Daniel
hi
solltest du bei Tino nicht auch an andere Lösungen denken?
application.Match hatte ich dir auch vorgeschlagen!
kannst du mir das bitte erklären?
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige