1. Aufgabe für heute: kürzer
01.03.2018 08:08:38
Burak
ich habe in einem Makro einen Funktionsaufruf der sich häufig wiederholt, aber leider nicht identisch ist. Daher funktioniert es nicht über eine schleife.
Jetzt kam ich auf die Idee es mit einer Hilfsvariablen zu arbeiten, aber das hat auch nicht funktioniert.
Es geht um folgenden Code
Option Explicit
'Variablendeklaration Hilfsvariablen
Dim Zeilenzahl As Long, vorgang As String
'Variablendeklaration AOI
Dim bauteilFehlt As Integer, fehlalarm As Integer, xray As Integer, bauteilFalsch As Integer
Dim loetfehler As Integer, kurzschluss As Integer, erfolgreich As Integer, polaritaet As _
Integer
Dim keinAOI As Integer
'Variablendeklaration Eingabemaske
Dim barcode As String, bauteil As String, benutzer As String, fehlercode As String
Dim irepcode As Integer, pin As Integer, analysetyp As String, aoidatum As Date, lpnr As String
Dim aoiuhrzeit As String, repdatum As Date, repuhrzeit As String, schicht As String, libname As _
String
'Variablendeklaration Reparaturen
Dim pmtol As Integer, pmschmutz As Integer, pmopt As Integer, lbfkbc As Integer
Dim lbfkks As Integer, lbfkhp As Integer, lbfktp As Integer, lbbtv As Integer
Dim lbpaste As Integer, lbbtvorpin As Integer, btpinverbogen As Integer, btkopfl As Integer
Dim roentgen As Integer, btvbp As Integer, btvfkbc As Integer, btvfkks As Integer, btvfkhp As _
Integer
Dim btvfktp As Integer, btvopt As Integer, lfpadschmutz As Integer, lfbtdefekt As Integer
Dim lffkks As Integer, lfpaste As Integer, lfvagabt As Integer, lfschatt As Integer
Dim lfpadkrizz As Integer, ts As Integer, tspaste As Integer, tsfkbc As Integer, tsfkks As _
Integer
Dim tsfkhp As Integer, tsfktp As Integer, btfbp As Integer, btfp As Integer, btfopt As Integer
Dim pfma As Integer, pftol As Integer, gfdef As Integer, gftol As Integer, kdhandl As Integer
Dim kdvaga As Integer, kdfk As Integer, ufneu As Integer
Sub gesamtfiltern()
'Gefüllte Textfelder als Variablen speichern
If Gesamtfilter.barcodeBox "" Then barcode = Gesamtfilter.barcodeBox.Value
If Gesamtfilter.bauteilBox "" Then bauteil = Gesamtfilter.bauteilBox.Value
If Gesamtfilter.irepcodeBox "" Then irepcode = Gesamtfilter.irepcodeBox.Value
If Gesamtfilter.fehlercodeBox "" Then fehlercode = Gesamtfilter.fehlercodeBox.Value
If Gesamtfilter.benutzerBox "" Then benutzer = Gesamtfilter.benutzerBox.Value
If Gesamtfilter.analysetypBox "" Then analysetyp = Gesamtfilter.analysetypBox.Value
If Gesamtfilter.pinBox "" Then pin = Gesamtfilter.pinBox.Value
If Gesamtfilter.aoidatumBox "" Then aoidatum = Gesamtfilter.aoidatumBox.Value
If Gesamtfilter.aoiuhrzeitBox "" Then aoiuhrzeit = Gesamtfilter.aoiuhrzeitBox.Value
If Gesamtfilter.repdatumBox "" Then repdatum = Gesamtfilter.repdatumBox.Value
If Gesamtfilter.repuhrzeitBox "" Then repuhrzeit = Gesamtfilter.repuhrzeitBox.Value
If Gesamtfilter.schichtBox "" Then schicht = Gesamtfilter.schichtBox.Value
If Gesamtfilter.libnameBox "" Then libname = Gesamtfilter.libnameBox.Value
If Gesamtfilter.lpnrBox "" Then lpnr = Gesamtfilter.lpnrBox.Value
Ab hier beginnt sich der nahezu wiederholende Teil:
'Filtern nach Barcode & Bauteil
If Gesamtfilter.barcodeBox "" And Gesamtfilter.bauteilBox "" Then
'Zählen in AOI-Daten
bauteilFehlt = zaehlenbcbt("=1")
xray = zaehlenbcbt("=26")
bauteilFalsch = zaehlenbcbt("=3")
loetfehler = zaehlenbcbt("=6")
kurzschluss = zaehlenbcbt("=9")
polaritaet = zaehlenbcbt("=25")
keinAOI = zaehlenbcbt("=-1")
fehlalarm = zaehlenbcbt("=0")
erfolgreich = zaehlenbcbt("=")
'Zählen in Reparatur-Daten
pmtol = zaehlenbcbt2("=111")
pmschmutz = zaehlenbcbt2("=112")
pmopt = zaehlenbcbt2("=113")
lbfkbc = zaehlenbcbt2("=201")
lbfkks = zaehlenbcbt2("=202")
lbfkhp = zaehlenbcbt2("=203")
lbfktp = zaehlenbcbt2("=204")
lbbtv = zaehlenbcbt2("=205")
lbpaste = zaehlenbcbt2("=206")
lbbtvorpin = zaehlenbcbt2("=211")
btpinverbogen = zaehlenbcbt2("=301")
btkopfl = zaehlenbcbt2("=302")
roentgen = zaehlenbcbt2("=303")
btvbp = zaehlenbcbt2("=304")
btvfkbc = zaehlenbcbt2("=305")
btvfkks = zaehlenbcbt2("=306")
btvfkhp = zaehlenbcbt2("=307")
btvfktp = zaehlenbcbt2("=308")
btvopt = zaehlenbcbt2("=311")
lfpadschmutz = zaehlenbcbt2("=401")
lfbtdefekt = zaehlenbcbt2("=402")
lffkks = zaehlenbcbt2("=403")
lfpaste = zaehlenbcbt2("=404")
lfvagabt = zaehlenbcbt2("=405")
lfschatt = zaehlenbcbt2("=411")
lfpadkrizz = zaehlenbcbt2("=412")
ts = zaehlenbcbt2("=501")
tspaste = zaehlenbcbt2("=502")
tsfkbc = zaehlenbcbt2("=503")
tsfkks = zaehlenbcbt2("=504")
tsfkhp = zaehlenbcbt2("=505")
tsfktp = zaehlenbcbt2("=506")
btfbp = zaehlenbcbt2("=601")
btfp = zaehlenbcbt2("=602")
btfopt = zaehlenbcbt2("=611")
pfma = zaehlenbcbt2("=701")
pftol = zaehlenbcbt2("=711")
gfdef = zaehlenbcbt2("=801")
gftol = zaehlenbcbt2("=811")
kdhandl = zaehlenbcbt2("=901")
kdvaga = zaehlenbcbt2("=902")
kdfk = zaehlenbcbt2("=903")
ufneu = zaehlenbcbt2("=999")
'Tabellenblatt für Auswertung leeren
Call clearen
'Filtern nach Barcode
ElseIf Gesamtfilter.barcodeBox "" Then
'Zählen in AOI-Daten
bauteilFehlt = zaehlenbc("=1")
xray = zaehlenbc("=26")
bauteilFalsch = zaehlenbc("=3")
loetfehler = zaehlenbc("=6")
kurzschluss = zaehlenbc("=9")
polaritaet = zaehlenbc("=25")
keinAOI = zaehlenbc("=-1")
fehlalarm = zaehlenbc("=0")
erfolgreich = zaehlenbc("=")
'Zählen in Reparatur-Daten
pmtol = zaehlenbc2("=111")
pmschmutz = zaehlenbc2("=112")
pmopt = zaehlenbc2("=113")
lbfkbc = zaehlenbc2("=201")
lbfkks = zaehlenbc2("=202")
lbfkhp = zaehlenbc2("=203")
lbfktp = zaehlenbc2("=204")
lbbtv = zaehlenbc2("=205")
lbpaste = zaehlenbc2("=206")
lbbtvorpin = zaehlenbc2("=211")
btpinverbogen = zaehlenbc2("=301")
btkopfl = zaehlenbc2("=302")
roentgen = zaehlenbc2("=303")
btvbp = zaehlenbc2("=304")
btvfkbc = zaehlenbc2("=305")
btvfkks = zaehlenbc2("=306")
btvfkhp = zaehlenbc2("=307")
btvfktp = zaehlenbc2("=308")
btvopt = zaehlenbc2("=311")
lfpadschmutz = zaehlenbc2("=401")
lfbtdefekt = zaehlenbc2("=402")
lffkks = zaehlenbc2("=403")
lfpaste = zaehlenbc2("=404")
lfvagabt = zaehlenbc2("=405")
lfschatt = zaehlenbc2("=411")
lfpadkrizz = zaehlenbc2("=412")
ts = zaehlenbc2("=501")
tspaste = zaehlenbc2("=502")
tsfkbc = zaehlenbc2("=503")
tsfkks = zaehlenbc2("=504")
tsfkhp = zaehlenbc2("=505")
tsfktp = zaehlenbc2("=506")
btfbp = zaehlenbc2("=601")
btfp = zaehlenbc2("=602")
btfopt = zaehlenbc2("=611")
pfma = zaehlenbc2("=701")
pftol = zaehlenbc2("=711")
gfdef = zaehlenbc2("=801")
gftol = zaehlenbc2("=811")
kdhandl = zaehlenbc2("=901")
kdvaga = zaehlenbc2("=902")
kdfk = zaehlenbc2("=903")
ufneu = zaehlenbc2("=999")
'Tabellenblatt für Auswertung leeren
Call clearen
'Filtern nach Bauteil
ElseIf Gesamtfilter.bauteilBox "" Then
'Zählen in AOI-Daten
bauteilFehlt = zaehlenbt("=1")
xray = zaehlenbt("=26")
bauteilFalsch = zaehlenbt("=3")
loetfehler = zaehlenbt("=6")
kurzschluss = zaehlenbt("=9")
polaritaet = zaehlenbt("=25")
keinAOI = zaehlenbt("=-1")
fehlalarm = zaehlenbt("=0")
erfolgreich = zaehlenbt("=")
'Zählen in Reparatur-Daten
pmtol = zaehlenbt2("=111")
pmschmutz = zaehlenbt2("=112")
pmopt = zaehlenbt2("=113")
lbfkbc = zaehlenbt2("=201")
lbfkks = zaehlenbt2("=202")
lbfkhp = zaehlenbt2("=203")
lbfktp = zaehlenbt2("=204")
lbbtv = zaehlenbt2("=205")
lbpaste = zaehlenbt2("=206")
lbbtvorpin = zaehlenbt2("=211")
btpinverbogen = zaehlenbt2("=301")
btkopfl = zaehlenbt2("=302")
roentgen = zaehlenbt2("=303")
btvbp = zaehlenbt2("=304")
btvfkbc = zaehlenbt2("=305")
btvfkks = zaehlenbt2("=306")
btvfkhp = zaehlenbt2("=307")
btvfktp = zaehlenbt2("=308")
btvopt = zaehlenbt2("=311")
lfpadschmutz = zaehlenbt2("=401")
lfbtdefekt = zaehlenbt2("=402")
lffkks = zaehlenbt2("=403")
lfpaste = zaehlenbt2("=404")
lfvagabt = zaehlenbt2("=405")
lfschatt = zaehlenbt2("=411")
lfpadkrizz = zaehlenbt2("=412")
ts = zaehlenbt2("=501")
tspaste = zaehlenbt2("=502")
tsfkbc = zaehlenbt2("=503")
tsfkks = zaehlenbt2("=504")
tsfkhp = zaehlenbt2("=505")
tsfktp = zaehlenbt2("=506")
btfbp = zaehlenbt2("=601")
btfp = zaehlenbt2("=602")
btfopt = zaehlenbt2("=611")
pfma = zaehlenbt2("=701")
pftol = zaehlenbt2("=711")
gfdef = zaehlenbt2("=801")
gftol = zaehlenbt2("=811")
kdhandl = zaehlenbt2("=901")
kdvaga = zaehlenbt2("=902")
kdfk = zaehlenbt2("=903")
ufneu = zaehlenbt2("=999")
'Tabellenblatt für Auswertung leeren
Call clearen
und das geht insgesamt 14 mal so.Mein versuch war es indem ich bei jeder If Abfrage einen String speichere, der den zweiten Teil der Funktion ersetzt.
Apropos: hier auch die Funktionen:
'Funktionen zum Zählen nach irepcode
Function zaehlenbc(x As String) As Long
zaehlenbc = WorksheetFunction.CountIfs(Range("A2:A" & Zeilenzahl), barcode, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenbt(x As String) As Long
zaehlenbt = WorksheetFunction.CountIfs(Range("G2:G" & Zeilenzahl), bauteil, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenic(x As String) As Long
zaehlenic = WorksheetFunction.CountIfs(Range("H2:H" & Zeilenzahl), irepcode, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenbcbt(x As String) As Long
zaehlenbcbt = WorksheetFunction.CountIfs(Range("A2:A" & Zeilenzahl), barcode, Range("G2:G" & _
Zeilenzahl), bauteil, Range("H2:H" & Zeilenzahl), x)
End Function
Function zaehlenfc(x As String) As Long
zaehlenfc = WorksheetFunction.CountIfs(Range("M2:M" & Zeilenzahl), fehlercode, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenid(x As String) As Long
zaehlenid = WorksheetFunction.CountIfs(Range("N2:N" & Zeilenzahl), benutzer, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenat(x As String) As Long
zaehlenat = WorksheetFunction.CountIfs(Range("K2:K" & Zeilenzahl), analysetyp, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenpin(x As String) As Long
zaehlenpin = WorksheetFunction.CountIfs(Range("J2:J" & Zeilenzahl), pin, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenaoi(x As String) As Long
zaehlenaoi = WorksheetFunction.CountIfs(Range("O2:O" & Zeilenzahl), aoidatum, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenaoiu(x As String) As Long
zaehlenaoiu = WorksheetFunction.CountIfs(Range("P2:P" & Zeilenzahl), aoiuhrzeit, Range("H2:H" _
& Zeilenzahl), x)
End Function
Function zaehlenrepd(x As String) As Long
zaehlenrepd = WorksheetFunction.CountIfs(Range("Q2:Q" & Zeilenzahl), repdatum, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenrepu(x As String) As Long
zaehlenrepu = WorksheetFunction.CountIfs(Range("R2:R" & Zeilenzahl), repuhrzeit, Range("H2:H" _
& Zeilenzahl), x)
End Function
Function zaehlenschicht(x As String) As Long
zaehlenschicht = WorksheetFunction.CountIfs(Range("F2:F" & Zeilenzahl), schicht, Range("H2:H" _
& Zeilenzahl), x)
End Function
Function zaehlenlib(x As String) As Long
zaehlenlib = WorksheetFunction.CountIfs(Range("L2:L" & Zeilenzahl), libname, Range("H2:H" & _
Zeilenzahl), x)
End Function
Function zaehlenlp(x As String) As Long
zaehlenlp = WorksheetFunction.CountIfs(Range("S2:S" & Zeilenzahl), lpnr, Range("H2:H" & _
Zeilenzahl), x)
End Function
'Funktionen zum Zählen nach Fehlercode
Function zaehlenbc2(x As String) As Long
zaehlenbc2 = WorksheetFunction.CountIfs(Range("A2:A" & Zeilenzahl), barcode, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenbt2(x As String) As Long
zaehlenbt2 = WorksheetFunction.CountIfs(Range("G2:G" & Zeilenzahl), bauteil, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenic2(x As String) As Long
zaehlenic2 = WorksheetFunction.CountIfs(Range("H2:H" & Zeilenzahl), irepcode, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenbcbt2(x As String) As Long
zaehlenbcbt2 = WorksheetFunction.CountIfs(Range("A2:A" & Zeilenzahl), barcode, Range("G2:G" & _
Zeilenzahl), bauteil, Range("M2:M" & Zeilenzahl), x)
End Function
Function zaehlenfc2(x As String) As Long
zaehlenfc2 = WorksheetFunction.CountIfs(Range("M2:M" & Zeilenzahl), fehlercode, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenid2(x As String) As Long
zaehlenid2 = WorksheetFunction.CountIfs(Range("N2:N" & Zeilenzahl), benutzer, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenat2(x As String) As Long
zaehlenat2 = WorksheetFunction.CountIfs(Range("K2:K" & Zeilenzahl), analysetyp, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenpin2(x As String) As Long
zaehlenpin2 = WorksheetFunction.CountIfs(Range("J2:J" & Zeilenzahl), pin, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenaoi2(x As String) As Long
zaehlenaoi2 = WorksheetFunction.CountIfs(Range("O2:O" & Zeilenzahl), aoidatum, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenaoiu2(x As String) As Long
zaehlenaoiu2 = WorksheetFunction.CountIfs(Range("P2:P" & Zeilenzahl), aoiuhrzeit, Range("M2:M" _
& Zeilenzahl), x)
End Function
Function zaehlenrepd2(x As String) As Long
zaehlenrepd2 = WorksheetFunction.CountIfs(Range("Q2:Q" & Zeilenzahl), repdatum, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenrepu2(x As String) As Long
zaehlenrepu2 = WorksheetFunction.CountIfs(Range("R2:R" & Zeilenzahl), repuhrzeit, Range("M2:M" _
& Zeilenzahl), x)
End Function
Function zaehlenschicht2(x As String) As Long
zaehlenschicht2 = WorksheetFunction.CountIfs(Range("F2:F" & Zeilenzahl), schicht, Range("M2:M" _
& Zeilenzahl), x)
End Function
Function zaehlenlib2(x As String) As Long
zaehlenlib2 = WorksheetFunction.CountIfs(Range("L2:L" & Zeilenzahl), libname, Range("M2:M" & _
Zeilenzahl), x)
End Function
Function zaehlenlp2(x As String) As Long
zaehlenlp2 = WorksheetFunction.CountIfs(Range("S2:S" & Zeilenzahl), lpnr, Range("M2:M" & _
Zeilenzahl), x)
End Function
Das war mein Versuch:
'Filtern nach Barcode
ElseIf Gesamtfilter.barcodeBox "" Then
vorgang = "bc"
'Zählen in AOI-Daten
bauteilFehlt = zaehlen & vorgang("=1")
xray = zaehlen & vorgang("=26")
usw.Funktioniert so leider nicht.
Sorry für den langen Post und danke im Voraus :D