25.06.2018, 10:53
Hallo zusammen,
ich habe das Problem, dass mir beim Einlesen von Daten eine Fehlermeldung angezeigt wird, sofern Worksheet_Change aktiviert ist (Laufzeitfehler '9': Index außerhalb des gültigen Bereichs). Kommentiere ich hingegen Worksheet_Change aus während dem Einlesen der Daten und aktiviere es danach, funktioniert alles wie gewollt.
Meine zwei Programme zum Einlesen der Daten
Da beim Einlesen der Daten auf Unterprogramme verwiesen wird, würde das den Rahmen meiner Ansicht sprengen, daher die Frage:
Gibt es eine Möglichkeit, wie ich Worksheet_Change solange unterdrücken kann, bis die Daten eingelesen wurden?
Bin über jede Hilfe dankbar!
ich habe das Problem, dass mir beim Einlesen von Daten eine Fehlermeldung angezeigt wird, sofern Worksheet_Change aktiviert ist (Laufzeitfehler '9': Index außerhalb des gültigen Bereichs). Kommentiere ich hingegen Worksheet_Change aus während dem Einlesen der Daten und aktiviere es danach, funktioniert alles wie gewollt.
Code:
Option Explicit
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("T3:Z3000,P3:P3000")) Is Nothing Then
Target.Interior.ColorIndex = 6
platzhalter
LBProzentBerechnen
EGGehalt
LBBerechnen
irwazBerechnen
MEKhBerechnen
JEK
DeltaMEK35berechnen
DeltaMEKIrwazberechnen
DeltaMEKProzent
End If
End Sub
Meine zwei Programme zum Einlesen der Daten
Code:
Sub DatenEinlesen()
'Einlesen der Daten für die Spalten A bis M, sowie die Spalte AG
Call Readpersnr
Call Nameconvert
Call ReadEintritt
Call ReadDST
Call Readgeb
Call AlterEinlesen
Call DienstjahrFormelEinlesen
'Einlesen und gleichzeitiges kopieren der "Zukünftigen Daten" und der "Aktuellen Daten". Zudem werden Berechnungen angestoßen um Spaltenwerte zu ermitteln
Call ReadEG
Call ReadIRWAZSTD
Call Convertabcde
Call ReadLBUSZ
Call EGGehalt
Call platzhalter
Call LBProzentEinlesen
Call LBEinlesen
Call MEKhEinlesen
Call irwazEinlesen
Call JEK
Call DeltaMEK35berechnen
Call DeltaMEKIrwazberechnen
Call DeltaMEKProzent
End Sub
Code:
Sub ReadVorjahr()
Dim instring1 As String
Dim instring2 As String
Dim instring3 As String
Dim instring4 As String
Dim instring5 As String
Dim instring6 As String
Dim outstring() As String
Dim book, mybook As Workbook
Dim sourceline, destinationline As Integer
Dim Pfad As String
Dim location As String
Dim Identification As Long
Dim Help As Range
Set mybook = ActiveWorkbook
Pfad = (mybook.Worksheets("Parameter").Cells(2, 1))
Set book = Workbooks.Open(Filename:=Pfad, ReadOnly:=True)
sourceline = 3
destinationline = 3
Set Help = mybook.Worksheets("Gehaltsdaten").Range("A3:A3000")
On Error GoTo Fehler
While (destinationline < 1000)
'Nimmt die Personalnummer aus der Lasche "Mitarbeiterdaten" und ordnet die entsprechenden Daten anschliesen der richtigen Nummer in der Gehaltstabelle zu
Identification = book.Worksheets("Gehaltsdaten").Cells(destinationline, 1)
instring1 = book.Worksheets("Gehaltsdaten").Cells(destinationline, 9) 'Spalte I
instring2 = book.Worksheets("Gehaltsdaten").Cells(destinationline, 10) 'Spalte J
instring3 = book.Worksheets("Gehaltsdaten").Cells(destinationline, 11) 'Spalte K
instring4 = book.Worksheets("Gehaltsdaten").Cells(destinationline, 12) 'Spalte L
instring5 = book.Worksheets("Gehaltsdaten").Cells(destinationline, 13) 'Spalte M
instring6 = book.Worksheets("Gehaltsdaten").Cells(destinationline, 33) 'Spalte AG
location = WorksheetFunction.Match(Identification, Help, 0)
location = location + 2
mybook.Worksheets("Gehaltsdaten").Cells(location, 9) = instring1
mybook.Worksheets("Gehaltsdaten").Cells(location, 10) = instring2
mybook.Worksheets("Gehaltsdaten").Cells(location, 11) = instring3
mybook.Worksheets("Gehaltsdaten").Cells(location, 12) = instring4
mybook.Worksheets("Gehaltsdaten").Cells(location, 13) = instring5
mybook.Worksheets("Gehaltsdaten").Cells(location, 33) = instring6
Sprung:
destinationline = destinationline + 1
sourceline = sourceline + 1
Wend
book.Close savechanges:=False
Exit Sub
Fehler:
Resume Sprung
End Sub
Da beim Einlesen der Daten auf Unterprogramme verwiesen wird, würde das den Rahmen meiner Ansicht sprengen, daher die Frage:
Gibt es eine Möglichkeit, wie ich Worksheet_Change solange unterdrücken kann, bis die Daten eingelesen wurden?
Bin über jede Hilfe dankbar!