Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehlermeldung

Forumthread: Fehlermeldung

Fehlermeldung
27.01.2009 20:48:42
Werner
Hallo zusammen,
ich schon wieder :-)
Das nachfolgende Makro funktioniert sehr gut, doch wenn ich in eine Zelle auserhalb des Bereiches gehe kommt eine Fehlermeldung: Laufzeitfehler 91 : Objektvariable oder With-Blockvariable nicht festgelegt.
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, ActiveSheet.Range("E15:G18"))  "" Then
If Intersect(Target, ActiveSheet.Range("E15:G18")) Is Nothing Then Exit Sub
MsgBox "Zelle(n) " & Target.Address(0, 0) & " wirklich ändern?" & vbCrLf & _
"dies hätte Auswirkungen auf....", vbExclamation + vbYesNo, "      N a c h f r a  _
g e "
End If
End Sub


Wo hab ich da den Fehler ?
Gruß Werner

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlermeldung
27.01.2009 21:08:21
Gerd
Hallo Werner,
werfe die erste Codezeile u. das zugehörige End If raus.
Gruß Gerd
AW: Fehlermeldung
27.01.2009 21:30:00
Werner
Hallo Gerd,
das würde das Problem nicht Lösen, den ich möchte ja das die Meldung nur dann kommt, wenn die Aktive Zelle im Bereich nicht Leer ist.
Gruß Werner
AW: Fehlermeldung
28.01.2009 07:39:00
Gerd
Ja nun Werner!
Der Codefehler steckte wohl schon in dieser Zeile bzw. deren Platzierung.
Zum Weiteren kommt es darauf an, was daneben noch zugelassen werden soll ohne
dass die Aktion (Msgbox anzeigen) ausgeführt wird (Markieren mehrerer Zellen;Kopieren).
Gruß Gerd
Anzeige
evtl. anders herum ?
27.01.2009 21:09:00
Matthias
Hallo

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, ActiveSheet.Range("E15:G18")) Is Nothing Then Exit Sub
If Not Intersect(Target, ActiveSheet.Range("E15:G18"))  "" Then
MsgBox "Zelle(n) " & Target.Address(0, 0) & " wirklich ändern?" & vbCrLf & "dies hätte  _
Auswirkungen auf....", vbExclamation + vbYesNo, " N a c h f r a g e "
End If
End Sub


Gruß Matthias

Anzeige
AW: evtl. anders herum ?
27.01.2009 21:27:48
Werner
Hallo Matthias,
das klappt mit einer kleinen Änderung, und zwar dein Makro hat die Meldung dann gebracht, wenn die Zelle im Bereich leer war. Das Ziel war aber das die Meldung nur dann kommt, wenn die Aktive Zelle im Bereich nicht leer ist. Die Lösung war in Zeile 3 des Makros und zwar nicht.... " ", sondern =" ".
Nochmals herzlichen Dank :-)
Gruß Werner
Anzeige
If Target.Count = 1 Then ... sollte mit rein
28.01.2009 06:02:00
Matthias
Hallo Werner
Ja, das hast Du korrekt bemerkt :o)
Es sollte aber noch abgefragt werden, ob wirklich nur eine Zelle markiert ist.
In Peters Beispiel ist es schon drin, ich hatte es vergesssen.
  Wenn Du im Range("E15:G18") mehrere Zellen markierst kommt sonst eine VBA-Fehlermeldung.
  Laufzeitfehler 13 - Typen unverträglich
  Du mußt also zwingend Target.Count abfragen.


Ein weiteres Beispiel könnte also so aussehen.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, ActiveSheet.Range("E15:G18")) Is Nothing Then Exit Sub
If Target.Count = 1 Then
If Not Intersect(Target, ActiveSheet.Range("E15:G18")) = "" Then
MsgBox "Zelle(n) " & Target.Address(0, 0) & " wirklich ändern?" & vbCrLf & "dies hätte  _
Auswirkungen auf....", vbExclamation + vbYesNo, " N a c h f r a g e "
End If
End If
End Sub




oder anders strukturiert, so:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, ActiveSheet.Range("E15:G18")) Is Nothing Then
If Target.Count = 1 Then
If Not Intersect(Target, ActiveSheet.Range("E15:G18")) = "" Then
MsgBox "..."
End If
End If
End If
End Sub




Es müsste aber auch ohne ActiveSheet funktionieren,
da sich SelectionChange ja auf das ActiveSheet bezieht

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E15:G18")) Is Nothing Then
If Target.Count = 1 Then
If Not Intersect(Target, Range("E15:G18")) = "" Then
MsgBox "..."
End If
End If
End If
End Sub



Gruß Matthias
Anzeige
AW: If Target.Count = 1 Then ... sollte mit rein
28.01.2009 20:22:42
Werner
Hallo Matthias,
es funktionieren alle Beispiele :-)
herzlichen Dank
Gruß Werner
AW: Fehlermeldung
27.01.2009 21:26:12
Peter
Hallo Werner,
versuch es einmal so:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column  7 Or _
Target.Row  18 Then Exit Sub
If Target.Value = "" Then Exit Sub
MsgBox "Zelle(n) " & Target.Address(0, 0) & " wirklich ändern?" & vbCrLf & _
"dies hätte Auswirkungen auf....", vbExclamation + vbYesNo, _
"      N a c h f r a g e "
End Sub


Gruß Peter

Anzeige
AW: Fehlermeldung
27.01.2009 21:34:00
Werner
Hallo Peter,
Danke für deine Antwort, auch diese Lösung Funktioniert sehr gut.
Gruß Werner
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige