MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 15.04.2019, 06:36   #1
Fabien2004
Neuer Benutzer
Neuer Benutzer
Standard Excel2010 - VBA Objekt erforderlich

Hallo Forum,
ich habe meine VBA Codes so weit erweitert das sich jetzt ein Fehler eingeschlichen hat. "Objekt erforderlich".
Und brauche bitte Hilfe.

Fabien2004

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A:A")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, 1).Value = Format(Now, "dd.mm.yyyy")
End If
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, 1).Value = Format(Now, "hh:mm")
End If
If Not Intersect(Target, Range("G:G")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, -1).Value = Format(Now, "hh:mm")
End If
If Not Intersect(Target, Range("D2")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, 16).Value = Format(Now, "dd.mm.yyyy")
End If
If Not Intersect(Target, Range("D3")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, 16).Value = Format(Now, "hh:mm")
End If
If Not Intersect(Target, Range("E20:F125")) Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
If Target.Column = 5 Then Target.Offset(, 1) = ""
If Target.Column = 6 Then Target.Offset(, -1) = ""
ErrorHandler: Application.EnableEvents = True
End If
End Sub

Sub Sub1()
If Not Intersect(Target, Range("E20:K125")) Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
If Target.Column = 11 Then Target.Offset(, -5) = ""
If Target.Column = 6 Then Target.Offset(, 5) = ""
ErrorHandler: Application.EnableEvents = True
End If
End Sub


Private Sub Workbook_Open()
Zeitmakro
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime EarliestTime:=DaEt, Procedure:="Zeitmakro", Schedule:=False
End Sub
Fabien2004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 07:21   #2
Mase
MOF Koryphäe
MOF Koryphäe
Standard

Guten Morgen Fabien,

wann kommt der Fehler?
Beim Öffnen/Ändern oder Schließen der Mappe?

Was macht das Zeitmakro?
Das würde ich mal auskommentieren und Verhalten prüfen.

Kannst auch gern den Code von Zeitmakro posten.


gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 08:02   #3
Der Steuerfuzzi
MOF Profi
MOF Profi
Standard

Hallo,

das:
Code:

Sub Sub1()
If Not Intersect(Target, Range("E20:K125")) Is Nothing Then
On Error GoTo ErrorHandler
[...]
funktioniert nicht, da der Sub die Variable Target nicht bekannt ist.

__________________

Gruß
Michael
Der Steuerfuzzi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 08:06   #4
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin, @Steuerfuzzi,


Target wird an die Prozedur übergeben:
Code:

Private Sub Worksheet_Change(ByVal Target As Range)

__________________

Gruß
Ralf
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 08:07   #5
Der Steuerfuzzi
MOF Profi
MOF Profi
Standard

Ich meine ja auch die zweite Sub, die er gepostet hat, nämlich die:
Code:

Sub Sub1()
If Not Intersect(Target, Range("E20:K125")) Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
If Target.Column = 11 Then Target.Offset(, -5) = ""
If Target.Column = 6 Then Target.Offset(, 5) = ""
ErrorHandler: Application.EnableEvents = True
End If
End Sub
Und da wird eben nichts übergeben.

__________________

Gruß
Michael
Der Steuerfuzzi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 08:07   #6
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

im Fehlerfall öffnet sich der VBA-Editor und die fehlerhafte Zeile ist gelb markiert. Die müsstest Du uns zeigen.

ps: Stell den Code bitte in Code-Brackets (zweite Zeile, drittletzter Button von rechts), das liest sich sonst wie Dreck.

__________________

Gruß
Ralf

Geändert von drambeldier (15.04.2019 um 08:11 Uhr). Grund: ps
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 17:09   #7
Fabien2004
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Der Fehler "Objekt erforderlich" kommt wenn ich die Makros aktiviere, muss ich jedes mal machen wenn ich die Tabelle öffne

Fabien2004

Option Explicit
' Code "Zeitmakro" von Hajo Ziplies,
Public DaEt As Date

Sub Zeitmakro()
ThisWorkbook.Worksheets("Kräfte und Mittel").Range("M2") = Format(Time, "hh:mm:ss")
DaEt = Now + TimeValue("00:00:01")
Application.OnTime DaEt, "Zeitmakro"
End Sub
Fabien2004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 17:11   #8
Fabien2004
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Also wenn ich die Mappe schließe kommt keine Fehlermeldung.

Fabien2004

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A:A")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, 1).Value = Format(Now, "dd.mm.yyyy")
End If
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, 1).Value = Format(Now, "hh:mm")
End If
If Not Intersect(Target, Range("G:G")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, -1).Value = Format(Now, "hh:mm")
End If
If Not Intersect(Target, Range("D2")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, 16).Value = Format(Now, "dd.mm.yyyy")
End If
If Not Intersect(Target, Range("D3")) Is Nothing Then
If IsEmpty(Target) = False Then _
Target.Offset(0, 16).Value = Format(Now, "hh:mm")
End If
If Not Intersect(Target, Range("E20:F125")) Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
If Target.Column = 5 Then Target.Offset(, 1) = ""
If Target.Column = 6 Then Target.Offset(, -1) = ""
ErrorHandler: Application.EnableEvents = True
End If
End Sub

Sub Sub1()
If Not Intersect(Target, Range("E20:K125")) Is Nothing Then
On Error GoTo ErrorHandler
Application.EnableEvents = False
If Target.Column = 11 Then Target.Offset(, -5) = ""
If Target.Column = 6 Then Target.Offset(, 5) = ""
ErrorHandler: Application.EnableEvents = True
End If
End Sub


Private Sub Workbook_Open()
Zeitmakro
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime EarliestTime:=DaEt, Procedure:="Zeitmakro", Schedule:=False
End Sub
Fabien2004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 17:17   #9
Der Steuerfuzzi
MOF Profi
MOF Profi
Standard

Lieber Fabien, Du musst schon lesen (und auch tun), was man Dir schreibt:

Zitat: von drambeldier Beitrag anzeigen

im Fehlerfall öffnet sich der VBA-Editor und die fehlerhafte Zeile ist gelb markiert. Die müsstest Du uns zeigen.

ps: Stell den Code bitte in Code-Brackets (zweite Zeile, drittletzter Button von rechts), das liest sich sonst wie Dreck.

Es bringt nichts, wenn Du wie wild irgendeinen Code ohne Code-Tags hier reinschreibst, aber nicht konkret schreibst an was es hapert.

Wichtig ist:
In welcher Zeile tritt der Fehler auf?
Welche Fehlermeldung kommt genau (am besten mit Fehlernummer und Fehlerbeschreibung)?
Oft ist es hilfreich, wenn Du die Datei hier hochlädst, dann kann man den Fehler reproduzieren/eingrenzen.

__________________

Gruß
Michael
Der Steuerfuzzi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 17:18   #10
Fabien2004
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Neuer Versuch mit dem Code Brackets

Fabien2004

Code:

Private Sub Worksheet_Change(ByVal Target As Range)

 If Not Intersect(Target, Range("A:A")) Is Nothing Then
     If IsEmpty(Target) = False Then _
         Target.Offset(0, 1).Value = Format(Now, "dd.mm.yyyy")
 End If
 If Not Intersect(Target, Range("B:B")) Is Nothing Then
     If IsEmpty(Target) = False Then _
         Target.Offset(0, 1).Value = Format(Now, "hh:mm")
 End If
 If Not Intersect(Target, Range("G:G")) Is Nothing Then
      If IsEmpty(Target) = False Then _
         Target.Offset(0, -1).Value = Format(Now, "hh:mm")
 End If
 If Not Intersect(Target, Range("D2")) Is Nothing Then
      If IsEmpty(Target) = False Then _
         Target.Offset(0, 16).Value = Format(Now, "dd.mm.yyyy")
 End If
 If Not Intersect(Target, Range("D3")) Is Nothing Then
      If IsEmpty(Target) = False Then _
         Target.Offset(0, 16).Value = Format(Now, "hh:mm")
 End If
 If Not Intersect(Target, Range("E20:F125")) Is Nothing Then
    On Error GoTo ErrorHandler
    Application.EnableEvents = False
    If Target.Column = 5 Then Target.Offset(, 1) = ""
    If Target.Column = 6 Then Target.Offset(, -1) = ""
ErrorHandler:  Application.EnableEvents = True
   End If
   End Sub
 
 Sub Sub1()
 If Not Intersect(Target, Range("E20:K125")) Is Nothing Then
    On Error GoTo ErrorHandler
    Application.EnableEvents = False
    If Target.Column = 11 Then Target.Offset(, -5) = ""
    If Target.Column = 6 Then Target.Offset(, 5) = ""
ErrorHandler:  Application.EnableEvents = True
  End If
  End Sub


Private Sub Workbook_Open()
    Zeitmakro
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Application.OnTime EarliestTime:=DaEt, Procedure:="Zeitmakro", Schedule:=False
End Sub
Fabien2004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.04.2019, 17:25   #11
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Der @Steuerfuzzi hat schon darauf hingewiesen: TARGET hängt in der Luft. Das wäre nicht passiert, wenn in der ersten Zeile des Moduls
Code:

Option Explicit
stünde.

Abhilfe: Beim Aufruf der Sub1 TARGET als Parameter mitgeben:
Code:

   CAll Sub1(Target)
Kopf der Prozedur:
Code:

Sub Sub1 (Target as Range)
Hilfe im Trockendock macht keinen Spaß, weil die Wahrheit nun mal im lauffähigen (und getesteten) Code liegt. Stell also gefälligst Deiin .xlsm zur Verfügung, sonst machen wir hier das Licht aus.

__________________

Gruß
Ralf

Geändert von drambeldier (15.04.2019 um 17:28 Uhr).
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 06:59   #12
Fabien2004
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Sorry, ich wollte euch nicht verwirren, hatte nur den Code noch mal reingestellt.
Das mit dem Fehler "Objekt erforderlich" tritt wie ich schon geschrieben habe nur bei der Aktivierung der Markros auf.

Noch mal zur Tabelle, die als Anhang beigefügt haben. In Spalte E wird eine Uhrzeit eingetragen, wenn dann eine Zuordnung in Spalte G erfolgt erlischt der Wert Spalte E. Wenn dann in Spalte K eine Urzeit eingetragen wird soll Spalte G gelöscht werden damit die Werte in Spalte AB erfasst werden können.

Fabien2004
Angehängte Dateien
Dateityp: xlsm TestForum.xlsm (31,3 KB, 4x aufgerufen)
Fabien2004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 08:11   #13
Der Steuerfuzzi
MOF Profi
MOF Profi
Standard

Also bei mir kommt kein Fehler. Und die Sub1 wird nirgendwo aufgerufen.

__________________

Gruß
Michael
Der Steuerfuzzi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 09:44   #14
drambeldier
MOF Koryphäe
MOF Koryphäe
Standard

Moin,

was Du "Aktivierung" nennst, ist vermutlich der Aufruf von Sub1 per F5. Da Sub1 nicht weiß, was Target ist, scheppert's halt. Muss auch so sein.

ps: Option Explicit fehlt immer noch. Beratungsresistent?

__________________

Gruß
Ralf

Geändert von drambeldier (16.04.2019 um 09:48 Uhr).
drambeldier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.04.2019, 16:58   #15
Fabien2004
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke erst mal,

aber so Sattelfest mit VBA wie es aussieht bin ich nicht, habe das mit dem Explicit nicht verstanden, wo muss ich den Eintragen, oder schreibt mir doch mal den Code, damit ich es besser verstehe.

Fabien2004
Fabien2004 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.