Anzeige
Archiv - Navigation
1132to1136
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
Inhaltsverzeichnis

VBA für Änderungsmodus - Formeln ziehen = Fehler

VBA für Änderungsmodus - Formeln ziehen = Fehler
Jan
Liebe Excelianer,
ich komme heute mal mit einem kleinen Problemchen, bei dem ich aber allein nicht weiterkomme.
Der folgende hübsche Code (bereits mit eurer Hilfe) zeigt mir ab dem Teil "Case is = 7" ob Änderungen an Zellen einer Spalte durchgeführt wurden, indem er einen Kommentar anlegt, in dem die Änderung vermerkt ist. (Der Teil ab "Case is 14" ist nur der vollständigkeit halber dabei.) Das ganze funktioniert auch super, bis auf, wenn ich Formeln in dem überwachten Bereich per Maus über mehr als eine benachbarte Zelle ziehe, eine Fehlermeldung "Laufzeitfehler1004" kommt. Grund ist wahrscheinlich, dass Excel nicht zwei Zellen in einem Funktionsdurchlauf bearbeiten kann. Im Debugger bleibt der Zeiger denn auch bei "Target.AddComment" hängen.
Hat jemand eine Idee, wie ich diese Fehlermeldung unterdrücken kann. Im Fall des Formelziehens könnte auch gut auf den Kommentar verzichtet werden. Es sollte auf jeden Fall verhindert werden, dass die Option debuggen aufgerufen werden kann und VBA-Code sichtbar wird. (Dort steht unter anderem auch das Passwort.) Vielleicht so, dass die Funktion im Fall des Laufzeitfehlers beendet wird und von Anfang neu durchlaufen kann.
Danke und viele Grüße,
Jan
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
Case Is = 14
If Target.Column  14 Then Exit Sub
If Cells(Target.Row, 14) > 0 Then
Cells(Target.Row, 12) = Target
End If
If Cells(Target.Row, 14) = 0 Then
Cells(Target.Row, 12).FormulaR1C1 = "=RC[-5] * RC[-6]"
End If
Case Is = 7
If Not Intersect(Target, Range("G2:G255")) Is Nothing Then 'Ueberwachter Bereich
If Target.Comment Is Nothing Then 'wenn kein Kommentar vorhanden
Target.AddComment    'erstelle einen Kommentar
Target.Comment.Text Target.Comment.Text & Format(Target.Value, "#.##") & " geä  _
_
ndert am  " & Date 'schreibe Inhalt aus Zelle A1 in Kommentar
Target.Comment.Visible = False
Else  'wenn Kommentar vorhanden
Target.Comment.Text Target.Comment.Text & Chr(10) & Format(Target.Value, "#.##") _
_
& " geändert am  " & Date 'alter Inhalt und neuer Inhalt Zelle A1
Target.Comment.Shape.Height = Target.Comment.Shape.Height + 30 ' Höhe Feld
Target.Comment.Visible = False
End If
End If
Case Else
Exit Sub
End Select
End Sub

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

Betreff
Benutzer
Anzeige
AW: VBA für Änderungsmodus - Formeln ziehen = Fehler
04.02.2010 15:26:49
Luschi
Hallo Jan,
versuch es mal so:

Dim rg As Range
Select Case Target.Column
Case 14
Case 7
If Not Intersect(Target, ActiveSheet.Range("G2:G255")) Is Nothing Then 'Ueberwachter  _
Bereich
For Each rg In Target
If rg.Comment Is Nothing Then 'wenn kein Kommentar vorhanden
rg.AddComment    'erstelle einen Kommentar
End If
rg.Comment.Text rg.Comment.Text & Format(rg.Value, "#.##") & _
" geändert am  " & Date 'schreibe Inhalt aus Zelle A1 in Kommentar
rg.Comment.Visible = False
Next rg
End If
End Select
Set rg = Nothing
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA für Änderungsmodus - Formeln ziehen = Fehler
04.02.2010 15:41:46
Jan
Vielen Dank, ich werde beide Varianten ausprobieren. Habe mir gerade so weitergeholfen (siehe unten), aber so wie ich eure Codes verstehe, werden bei euch in alle Zellen Kommentare geschrieben, was mir gut gefällt.
Herzlichen Dank,
Jan
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo fehler
Select Case Target.Column
Case Is = 14
If Target.Column  14 Then Exit Sub
If Cells(Target.Row, 14) > 0 Then
Cells(Target.Row, 12) = Target
End If
If Cells(Target.Row, 14) = 0 Then
Cells(Target.Row, 12).FormulaR1C1 = "=RC[-5] * RC[-6]"
End If
Case Is = 7
If Not Intersect(Target, Range("G2:G255")) Is Nothing Then 'Ueberwachter Bereich
If Target.Comment Is Nothing Then 'wenn kein Kommentar vorhanden
Target.AddComment    'erstelle einen Kommentar
Target.Comment.Text Target.Comment.Text & Format(Target.Value, "#.##") & " geä _
ndert am  " & Date 'schreibe Inhalt aus Zelle A1 in Kommentar
Target.Comment.Visible = False
Else  'wenn Kommentar vorhanden
Target.Comment.Text Target.Comment.Text & Chr(10) & Format(Target.Value, "#.##") _
& " geändert am  " & Date 'alter Inhalt und neuer Inhalt Zelle A1
Target.Comment.Shape.Height = Target.Comment.Shape.Height + 30
Target.Comment.Visible = False
End If
End If
Case Else
Exit Sub
End Select
fehler:
Err = 0
End Sub

Anzeige
AW: VBA für Änderungsmodus - Formeln ziehen = Fehler
04.02.2010 15:35:06
Ramses
Hallo
Target ist immer die aktive Zelle, du könntest allenfalls noch eine Abfrage einbauen
CAse = 7
If Not Intersect(Target, Range("G2:G255")) Is Nothing Then 'Ueberwachter Bereich
If Selection.Cells.Count > 1 Then
Selection.Cells(1, 1).Select
End If
und dann nicht mit Target weiterarbeiten sondern mit ActiveCell,.. also in dem Stil
with ActiveCell
If .Comment Is Nothing Then 'wenn kein Kommentar vorhanden
.AddComment 'erstelle einen Kommentar
.Comment.Text .Comment.Text & Format(Target.Value, "#.##") & " geä _
_
ndert am " & Date 'schreibe Inhalt aus Zelle A1 in Kommentar
.Comment.Visible = False
Else 'wenn Kommentar vorhanden
.Comment.Text .Comment.Text & Chr(10) & Format(Target.Value, "#.##") _
_
& " geändert am " & Date 'alter Inhalt und neuer Inhalt Zelle A1
.Comment.Shape.Height = Target.Comment.Shape.Height + 30 ' Höhe Feld
.Comment.Visible = False
End If
End With
Gruss Rainer
Anzeige
Target -> Zellformat ändern?
04.02.2010 15:52:00
Jan
...noch eins - ist es auch möglich neben der Erstellung eines Kommentars, über Target die Zellformatierung so zu ändern, dass z.B. der Text in Rot geschrieben wird?
LG, Jan
AW: Target -> Zellformat ändern?
04.02.2010 15:55:27
Ramses
Hallo
Klar geht das.
Extras - makro - Makrorecoder Aufzeichnung starten
zelle formatieren
Aufzeichnung beenden
Fertig
... und schon hast du den Code den du brauchst.
Gruss Rainer
AW: Target -> Zellformat ändern?
04.02.2010 16:05:53
Jan
Jupp, also so:
Target.Font.ColorIndex = 54
(hatte nur irgendwo gelesen, dass man über Target das Format nicht ändern kann, naja.)
Beste, Jan

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige