- #1
B
Billy
Guest
tag auch
zuerst die Information dass ich den Thread hier umgeschrieben habe weil meine alte Frage sich erledigt hat =).
nun meine neue Frage: Kann man folgenden Code hier Noch schneller machen oder nicht?
Folgendes hab ich im Worksheet:
dies ist Modul 1 (Check)
und das hier modul 2 (Kontrolle)
falls wer was schnelleres findet, wäre ich froh wenn Er/Sie dies mir mitteilen könnte
mfg billy
zuerst die Information dass ich den Thread hier umgeschrieben habe weil meine alte Frage sich erledigt hat =).
nun meine neue Frage: Kann man folgenden Code hier Noch schneller machen oder nicht?
Folgendes hab ich im Worksheet:
Code:
Private Sub WorkSheet_Change(ByVal Target As Excel.Range)
Call Check(schulze, reimann, Schulzer Einrico,Reimann Norbert, B, BE, 11, 49, 4,6)
End Sub
dies ist Modul 1 (Check)
Code:
Option Explicit
Global split_kurzn() As String
Global split_namen() As String
Global split_zeilen() As String
Function Check(Kurznamen, Namen, anfang_spalte, ende_spalte, anfang_zeile, ende_zeile, fuehrer_zeilen)
'split_kurzn() hat alle Kurznamen in sich als Array gespeichert
'split_namen() hat alle Namen in sich als Array gespeicheret
'split_zeilen() hat alle Führer_zeilen in sich als Array
split_kurzn = split(Kurznamen, ,)
split_namen = split(Namen, ,)
split_zeilen = split(fuehrer_zeilen, ,)
Call Kontrolle(anfang_spalte, ende_spalte, anfang_zeile, ende_zeile)
End Function
und das hier modul 2 (Kontrolle)
Code:
Option Explicit
Function Kontrolle(anfang_spalte, ende_spalte, anfang_zeile, ende_zeile)
Dim bereich As String, columns As Long
bereich = anfang_spalte & anfang_zeile & : & ende_spalte & ende_zeile
columns = ActiveSheet.Range(bereich).columns.Count - 1
Dim x As Long, y As Long, i As Long, fuehrer As Long, fuehrer_spalte As String
Dim kurzname As String, temp As String, t_spalte As String, l_anz As Long, Zelle As Range
fuehrer = 0
Application.EnableEvents = False
For x = 2 To columns
t_spalte = Replace(Cells(1, x).Address(rowabsolute:=False, Columnabsolute:=False), 1, )
bereich = t_spalte & anfang_zeile & : & t_spalte & ende_zeile
For i = 0 To UBound(split_kurzn)
kurzname = Replace(split_kurzn(i), , )
fuehrer = ActiveSheet.Application.WorksheetFunction.CountIf(ActiveSheet.Range(bereich), kurzname)
If fuehrer >= 2 Then
For Each Zelle In ActiveSheet.Range(bereich)
If Zelle.Value = kurzname Then
temp = Zelle.Address(rowabsolute:=False, Columnabsolute:=False)
If l_anz = 0 Then
fuehrer_spalte = temp
Else
fuehrer_spalte = fuehrer_spalte & , & temp
End If
l_anz = l_anz + 1
End If
Next
Application.EnableEvents = True
MsgBox da ist was doppelt bei & fuehrer_spalte & für den Führer & split_namen(i)
Application.EnableEvents = False
Cells(split_zeilen(i), x).Value =
ElseIf fuehrer = 1 Then
Cells(split_zeilen(i), x).Value = X
ElseIf fuehrer = 0 Then
Cells(split_zeilen(i), x).Value =
End If
fuehrer = 0
fuehrer_spalte = !
Next
Next
Application.EnableEvents = True
End Function
falls wer was schnelleres findet, wäre ich froh wenn Er/Sie dies mir mitteilen könnte
mfg billy