Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
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 schaut zu weit voraus

VBA schaut zu weit voraus
08.10.2014 09:37:40
A.Appel
Hallo,
ich habe folgenden Code im Rahmen einer Zellenüberwachung:
If Not Application.Intersect(target, Range("G:G")) Is Nothing And Not Range("M1").Value = "" Then
zwischen = ActiveSheet.Range("K1").Value + ActiveSheet.Range("O1").Value
Set wksData = Worksheets("Daten " & zwischen & "MA")
Application.EnableEvents = False
Jetzt läuft er mir jedesmal auf Fehler13 Typen unverträglich, schubst man ihn dann weiter geht alles problemlos.
Ich vermute nach dem Debugger, dass er zu Beginn sagt, dass das Worksheet mit dem Wert zwischen = 0 nicht existiert und geht daher auf Fehler. Wie bringe ich ihn dazu nicht in einen Fehler zu laufen und "abzuwarten" bis zwischen gesetzt ist?
Per Errorhandling abzufangen und ihn einfach weitermachen zu lassen ist irgendwie nicht besonders elegant.
Grüße
Andreas

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA schaut zu weit voraus
08.10.2014 10:37:34
Ewald
Hallo,
zeige mal ein Beispiel
was steht in K1 und O1
wie ist "zwischen" definiert
was soll dann bei "set wksdata" stehen
wie ist wksdata definiert
Gruß Ewald

AW: VBA schaut zu weit voraus
08.10.2014 10:49:06
A.Appel
Hallo Ewald,
K1 = 1
O1 = 0,1
zwischen ist als Double definiert
wksData als Worksheet
Wenn ich nach dem Fehler auf Einzelschritt weitermache setzt er auch alles richtig, zwischen trägt 1,1 und wks Data wird demzufolge dann "Daten 1,1MA" und die Berechnungen laufen korrekt.
Grüße

AW: VBA schaut zu weit voraus
08.10.2014 11:19:58
fcs
Hallo Andreas,
der Typfehler 13 deutet darauf hin, dass in K1 oder O1 kein nummerischer Inhalt steht. Dies führt dann bei der Addition zum Typ-Fehler.
Du musst noch entsprechende Prüfungen für die beiden Zellen einbauen.
Zusätzlich ist es ratsam entsprechende Fehler-Prüfungen einzubauen, die das Makro kontrolliert beenden mit passenden Fehlermeldungen.
Die Meldungen zu den Zellen K1 und O1 kannst du ja weglassen, wenn sie zu sehr nerven.
evtl. stimmt ja auch die Logik deiner Eingaben noch nicht zu 100%.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
Dim zwischen As Double
Dim wksData As Worksheet
On Error GoTo Fehler
If Not Application.Intersect(Target, Range("G:G")) Is Nothing And Not Range("M1").Value = ""  _
Then
With ActiveSheet.Range("K1")
If IsNumeric(.Value) And .Value > 0 Then
zwischen = .Value
With ActiveSheet.Range("O1")
If IsNumeric(.Value) And .Value > 0 Then
zwischen = zwischen + .Value
Set wksData = Worksheets("Daten " & zwischen & "MA")
Application.EnableEvents = False
'weiterer Code
Application.EnableEvents = True
Else
'unzulässige Werte
MsgBox "unzulässiger Wert in  Zelle O1"
End If
End With
Else
'unzulässige Werte
MsgBox "unzulässiger Wert in  Zelle K1"
End If
End With
End If
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case 9 'Index-Fehler
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Blatt mit Name """ & "Daten " & zwischen & "MA""" & " existiert nicht"
Case 13 ' Typ-Fehler
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description & vbLf & vbLf _
& "Inhalte in K1 und O1 nicht kompatibel für Adddition"
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Application.EnableEvents = True
End Sub

Anzeige
AW: VBA schaut zu weit voraus
08.10.2014 11:35:13
Ewald
Hallo,
deklariere "zwischen" als String falls die Zahlen Text sein können.
Gruß Ewald

AW: VBA schaut zu weit voraus
08.10.2014 11:40:14
A.Appel
Hi Franz,
so einfach kann die Welt sein...:D
Ich trage die beiden Zellen per VBA ein...die 0,1 hat er mir aber nicht mehr als Zahl formatiert, ist mir aber gar nicht aufgefallen. Kaum ändert man das Zahlenformat schon funktionierts ;)
Muss ich ihn nur als Zahl definiert eintragen lassen.
Errorhandling will ich über das gesamte Worksheet hinweg noch aktivieren, da andere User damit arbeiten sollen. Bisher läufts aber ohne Fehler :)
Danke nochmal!
Grüße
Andreas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige