Makro startet in falscher Excel-Datei
01.11.2018 12:00:55
Dominik
ich habe wieder einmal ein kleines Problem bei dem Ihr mir bestimmt weiterhelfen könnt. Mit Hilfe von einigen in diesem Forum habe ich bereits ein Makro geschrieben, welches das Datum in eine bestimmte Zelle schreibt wenn ich einen Wert ändere oder den enthaltene mit "Enter" bestätige.
Zur Erklärung das folgende Makro soll/bewirkt, dass ich die Freibeträge in einer Tabelle eintragen kann. Wenn ich den Wert ändere oder mit "Enter" bestätige, dann wird das aktuelle Datum in der gleichen Zeile (andere Spalte) eingetragen. Dadurch ist mir gleich ersichtlich wie aktuell der eingetragene Wert ist.
Probleme habe ich wenn ich gleichzeitig die Excel-Datei in der sich dieses Makro befindet offen habe und eine weitere Excel-Datei. Dann sorgt das Makro immer für einen Debug (Laufzeitfehler '1004' [siehe Bild im Anhang]).
Das Makro hängt sich dann in der Zeile
"If Intersect(Zelle, Union(Range("tblDominik"), Range("tblAnja")), Columns(p_cintSpalteBetrag)) Is Nothing Then Exit Sub" auf.
In den entsprechenden "Sheets" befindet sich dazu das Makro
Im Sheet:
Option Explicit
Private Sub Worksheet_Activate()
Dim strSheetCodename As String
strSheetCodename = ActiveSheet.CodeName
modZelleAktivieren.InZelleSpringen (strSheetCodename)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
p_intSelectSpalte = Target.Column
p_intSelectZeile = Target.Row
Application.OnKey "{ENTER}", "DatumEintragenFreibetraege"
Application.OnKey "~", "DatumEintragenFreibetraege"
Application.EnableEvents = True
End Sub
Die entsprechende Sub "DatumEintragenFreibetrag" lautet:
Public Sub DatumEintragenFreibetraege()
Dim Zelle As Range
Dim intOffset As Integer
intOffset = 1
If p_intSelectZeile = 0 Or p_intSelectSpalte = 0 Then
ActiveCell.Offset(1, 0).Select
Exit Sub
Else
Set Zelle = Sheet5.Cells(p_intSelectZeile, p_intSelectSpalte)
If Intersect(Zelle, Union(Range("tbl..."), Range("tbl...")), Columns(p_cintSpalteBetrag) _
_
) Is Nothing Then Exit Sub
modBlattschutz.BlattschutzAus
Sheet5.Cells(p_intSelectZeile, p_intSelectSpalte).Offset(0, p_cintOffsetDatumBetrag). _
Value = Format(Date, "DD.MM.YYYY")
modBlattschutz.BlattschutzAn
Do While Sheet5.Cells(p_intSelectZeile + intOffset, p_intSelectSpalte).Locked = True
If intOffset > 100 Then
intOffset = 0
Exit Do
Else
intOffset = intOffset + 1
End If
Loop
Sheet5.Cells(p_intSelectZeile, p_intSelectSpalte).Offset(intOffset, 0).Select
End If
End Sub
Ich hoffe Ihr könnt mir mit diesen Informationen bereits weiterhelfen. Sollte ich noch etwas schuldig bleiben, dann meldet euch bitte.