Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
504to508
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
504to508
504to508
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Dateneingabe im 3. Arbeitsblatt überwachen

Dateneingabe im 3. Arbeitsblatt überwachen
26.10.2004 14:51:58
joachim
Hallo an alle Teilnehmer,
kann mir bitte jemand sagen, wo ich bzw. was ich in den Code schreiben muss? Mein Problem:
Ich habe drei Arbeitsblätter: Alte, Junge und Alle.
Die beiden ersten dienen zur Dateneingabe und im driten führe die beiden Blätter zusammen. Dort möchte ich auf Dopplungen überprüfen. Und durch eine MSG-Box warnen.
Also wenn ich Daten in Blatt1 = Alte eingebe und es steht zur selben Zeit der gleiche Name und dieselbe Uhrzeit in Blatt2 = Junge, dann soll eine Msgbox erscheinen.
In den einzelnen Bättern geht das nur nicht blattübergreifend.
Was kann ich da machen?
Danke für alle Hilfe.
Gruß
Joachim

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateneingabe im 3. Arbeitsblatt überwachen
26.10.2004 19:01:39
joachim
Hallo noch mal,
mein Problem könnte sein, dass ich die aktuelle Zellposition abfrage. Dabei werden zwar die in den Tabellen die daten ausgetauscht (weil verknüpft) aber dort lösen sie nicht das Changeereignis aus. Wie müsste ich den Code anpassen?
Vielen Dank schon mal.
Herzlichen Gruß
Joachim
Hier mein Code:
Public tmpMA As Variant 'gerade eingebene MAzahl
Public tmpZeit As Variant 'zur MAzahl gehörende Uhrzeit
Public aktColumn As Variant 'Spaltenindex der gerade eingebenen Zelle
Public aktRow As Variant 'Zeilenindex der gerade eingebenen Zelle
Public Msg As Variant
Public ZeitSpaltenIndex As Variant 'Spaltenindex der Spalte in der die Beginnzeiten der GS vermerkt sind
Public Planzeichen As Variant 'Abkürzung der Mitarbeiter im Plan

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Dim tmpStartZeile As Integer 'Variierende Zeilenindizes
'Dim tmpEndZeile As Integer
'Festlegungen
ZeitSpaltenIndex = 4
ActiveWorkbook.Names.Add Name:="LastChange", RefersToR1C1:=Target 'letzte aktive zelle
Zelle = Target.Address
'Indizees + Inhalt der Zelle der Letzten eingabe ermitteln
aktColumn = ActiveCell.Column
aktRow = ActiveCell.Row - 1 'zuletzt bearbeitete Zelle liegt eine Zelle über der jetzt aktiven
tmpMA = Cells(aktRow, aktColumn) 'gerade eingegebener Wert
tmpZeit = Cells(aktRow, ZeitSpaltenIndex) 'dazugehörige Zeit
'Test, ob doppelte Eingabe eines Mitarbeiters differenziert nach Wochentag
If aktRow > 7 And aktRow < 25 Then
Call TestDoppelte(8, 24)
ElseIf aktRow > 27 And aktRow < 30 Then
Call TestDoppelte(28, 29)
ElseIf aktRow > 32 And aktRow < 43 Then
Call TestDoppelte(33, 42)
ElseIf aktRow > 45 And aktRow < 52 Then
Call TestDoppelte(46, 51)
ElseIf aktRow > 54 And aktRow < 60 Then
Call TestDoppelte(55, 59)
End If
End Sub

'Unterfunktion zum Testen auf doppelte Mitarbeiter mit TestStart- und TestEndeZeile als Parameter
Function TestDoppelte(ByVal StartZeile As Integer, ByVal EndZeile As Integer)
For RowIndex = StartZeile To EndZeile
If ActiveSheet.Cells(RowIndex, aktColumn).Value "" And ActiveSheet.Cells(RowIndex, aktColumn).Value "~~" And ActiveSheet.Cells(RowIndex, aktColumn).Value "S" And ActiveSheet.Cells(RowIndex, aktColumn).Value "F" Then
If ActiveSheet.Cells(RowIndex, aktColumn).Value = tmpMA Then
If RowIndex aktRow Then 'Ausnahme, wenn die Schleife an der am aktuellen MA angekommen ist, beachten
If ActiveSheet.Cells(RowIndex, ZeitSpaltenIndex) = tmpZeit Then
Beep
Msg = MsgBox("Keine doppelte Eingabe möglich! aktueller MA:" & ActiveSheet.Cells(RowIndex, aktColumn).Value & " Spalte:" & aktColumn & " Zeile" & RowIndex, vbRetryCancel, "Nana, Herr Planbearbeiter!")
If Msg = vbRetry Then ' Benutzer hat "Ja" gewählt.
If Merk "" Then Range(Merk).Interior.ColorIndex = xlNone 'markiert zuletzt bearbeitete Zelle
Merk = Zelle
Range(Zelle).Interior.ColorIndex = 7
Range(Zelle).Activate
Application.OnTime Now + TimeValue("00:00:03"), "ZellNormal"
Else ' Benutzer hat "Nein" gewählt.
MsgBox ("JA") ' Nur zur Kontrolle.
End If
End If
End If
End If
End If
Next
End Function
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige