Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
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
Veränderung einer Zelle VBA
Paul
Hallo Excel Freaks,
ich stehe vor einer Herausforderung.
Bei jeglicher Veränderung in einer Zelle soll in einem seperaten Register einiges aufgezeichnet werden.
(z.B. Anwender, Dateiname, Registername, Datum,... usw.)
Dafür nutze ich folgenden VBA Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Tabelle2").Cells(Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = _
Application.UserName & " " & ActiveWorkbook.Name & " " & _
ActiveSheet.Name & " " & Target.Address & " " & _
Date & " " & Format(Now, "HH:mm:ss") & " " & _
ActiveSheet.Cells(Target.Row, Target.Column)
End Sub

Wenn z.B. die Zelle A1 in Register Tabelle1 mit "Hallo" gefüllt wurde, wird folgender Eintrag in Register Tabelle2 generiert:
Paul Ereignisse fixieren.xls Tabelle1 $A$1 25.02.10 15:49:08 Halloo
Jetzt ändere ich die Zelle A1 nochmals und es wird ein neuer Eintrag in Register Tabelle2 generiert:
Paul Ereignisse fixieren.xls Tabelle1 $A$1 25.02.10 15:50:44 Hallo
Meine Frage ist folgende:
Wie muss ich den Code umschreiben, dass bevor ich die Zelle überschreibe eine Imputbox aufleuchtet, wo der Gurnd für die Änderung erfasst werden soll. Es soll dann folgender Eintrag in Register Tabelle2 generiert werden:
Paul Ereignisse fixieren.xls Tabelle1 $A$1 25.02.10 15:50:44 Hallo verschrieben
Ich bin mir sicher, dass mir jemand helfen kann?
Gruss
Paul

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Veränderung einer Zelle VBA
25.02.2010 17:27:51
fcs
Hallo Paul,
ich würde jede der Informationen in eine eigene Spalte schreiben, nicht in alles in eine Zelle. Das ist übersichtlicher, und du kannst die Liste sortieren/filtern.
Den Grund kann man per Inputbox eingeben. Ich hab es mal so eingerichtet, dass ein Grund eingegeben werden muss. Abbrechen startet die Eingabe erneut.
Bei vielen Eingaben wird das aber ziemlich nervig.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wksAend As Worksheet, lZeile As Long, sGrund As String, sPrompt As String
Set wksAend = Worksheets("Tabelle2")
sPrompt = "Bitte den Grund für die Änderung eingeben"
Do
sGrund = InputBox(sPrompt, "Änderungs-Grund")
If sGrund  "" Then Exit Do
sPrompt = "Bitte den Grund für die Änderung eingeben" & vbLf _
& "Eingabe ist zwingend erforderlich!"
Loop
With wksAend
lZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
'Jede Information in eine eigene Zelle
.Cells(lZeile, 1) = Application.UserName
.Cells(lZeile, 2) = ActiveWorkbook.Name
.Cells(lZeile, 3) = ActiveSheet.Name
.Cells(lZeile, 4) = Target.Address
.Cells(lZeile, 5) = Format(Now, "YYYY-MM-DD hh:mm:ss")
.Cells(lZeile, 6) = Target.Range("A1")
.Cells(lZeile, 7) = sGrund
'oder alles in eine Zelle
'    .Cells(lZeile, 1) = Application.UserName & " " & ActiveWorkbook.Name & " " & ActiveSheet. _
Name _
& " " & Target.Address & " " & Format(Now, "YYYY-MM-DD hh:mm:ss") _
& " " & Target.Range("A1") & " " & sGrund
End With
End Sub

Anzeige
VOR der Veränderung, geht nicht...
25.02.2010 17:30:57
Renee
Paul,
Weil die Ereignisprozedur erst NACH der Veränderung angestossen wird.
Es gibt kein BeforeChange Ereignis, da EXCEL ja nicht wissen kann OB du was ändern willst.
Für eine Inputbox (nach der Veränderung) einfach noch ein
& InputBox("Grund:")
anhängen.
GreetZ Renée
AW: Veränderung einer Zelle VBA
25.02.2010 18:12:40
hary
Hallo Paul
evtl hilts Dir wenn Du den Inhalt vorher nacher vergleichst.

Option Explicit
Dim a
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim zusatz
If Target.Value  a Then 'vergleicht Neu gegen Alt
zusatz = InputBox("Bitte Zusatz eintragen")
End If
End Sub
'---- liest erstmal Zelleninhalt aus---------
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
a = Target.Value
End Sub

gruss hary
Anzeige
AW: Veränderung einer Zelle VBA
26.02.2010 09:53:32
Paul
Hallo zusammen,
erstmals vielen vielen Dank für die schnelle Hilfe.
Alle drei Makros laufen hervorragend!!
Gibt es die Möglichkeit das sich das "Grund-Fenster" nur dann öffnet, wenn die Zelle überschrieben werden soll.
D.h. bei einer Neueingabe soll kein Fenster geöffnet werden, nur bei Veränderung einer bestehenden.
Vielen Dank.
Paul
AW: Veränderung einer Zelle VBA
26.02.2010 09:56:11
Paul
Hallo zusammen,
erstmals vielen vielen Dank für die schnelle Hilfe.
Alle drei Makros laufen hervorragend!!
Gibt es die Möglichkeit das sich das "Grund-Fenster" nur dann öffnet, wenn die Zelle überschrieben werden soll.
D.h. bei einer Neueingabe soll kein Fenster geöffnet werden, nur bei Veränderung einer bestehenden.
Vielen Dank.
Paul
Anzeige
AW: Veränderung einer Zelle VBA
26.02.2010 10:44:13
hary
Hallo Paul
versuch mal so. Da erscheint die Inputbox nur wenn was drin steht.

Option Explicit
Dim a
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim zusatz
If a  "" Then 'wenn a nicht leer
zusatz = InputBox("Bitte Zusatz eintragen")
End If
End Sub
'---- liest erstmal Zelleninhalt aus---------
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
a = Target.Value
End Sub

gruss hary

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige