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

1. Aufgabe für heute: kürzer

1. Aufgabe für heute: kürzer
01.03.2018 08:08:38
Burak
Guten Morgen Leutchens,
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

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nicht machbar oder ungeduldig? owT
01.03.2018 10:47:48
Burak
AW: nicht machbar oder ungeduldig? owT
01.03.2018 10:57:22
Ralf
Hi Burak,
machbar ist das. Unglücklicherweise hast Du Deinen Code jedoch so umständlich gestaltet, dass sich vermutlich keiner an einer weiteren "Flickschusterei" beteiligen will. Das ginge alles wesentlich kürzer, effektiver und schneller, aber dazu müsste man das von vorn aufsetzen.
Im Übrigen würde eine einzige Zählfunktion genügen, wenn Du die entsprechenden Parameter übergeben würdest...
Bsp.:
  • Function Zählen(KSpalte1 as integer, Krit1 as string, KSpalte2 as integer, Krit2 as string) as integer

  • Anzeige
    AW: nicht machbar oder ungeduldig? owT
    01.03.2018 11:06:37
    Burak
    schonmal ein sehr hilfreicher Tipp, danke. Ich mach mich mal ran das mal umzusetzen. :)
    funktioniert, danke Anton :) owT
    01.03.2018 11:28:52
    Burak

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige