Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
824to828
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
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Problem mit while schleife - Laufzeitfehler 91

Problem mit while schleife - Laufzeitfehler 91
09.12.2006 18:47:24
Steffen
Hallo @ all
ich habe ein Problem beim beenden der Userform. Läuft die Userform ist alles ok aber egal welche if abfrage ich versuche um die While Schleife irgendwie zu schließen nichts von meinen Versuchen hat funktioniert.
----------------------------------------------------------
Laufzeitfehler 91
Objektvariable oder With-Bolckvariable nicht festgelegt
----------------------------------------------------------
und das ist die Stelle die er immer wieder anmeckert :
While MSComm1.InBufferCount &lt 46 ' Erwartet werden 46 Zeichen
DoEvents
Wend
----------------------------------------------------------
danach folgt die auswertung des Strings als Array
----------------------------------------------------------
s = MSComm1.Input 'Jetzt sind sie da, als String
z = Split(s, ";")
x0 = Val(z(1)) 'Messwert 0..1023
y0 = x0 'x ist der Messwert 0..5V
x1 = Val(z(2)) 'Messwert 0..1023
y1 = x1 'x ist der Messwert 0..5V
x2 = Val(z(3)) 'Messwert 0..1023
y2 = x2 'x ist der Messwert 0..5V
x3 = Val(z(4)) 'Messwert 0..1023
y3 = x3 'x ist der Messwert 0..5V
x4 = Val(z(5)) 'Messwert 0..1023
y4 = x4 'x ist der Messwert 0..5V
x5 = Val(z(6)) 'Messwert 0..1023
y5 = x5 '
x6 = Val(z(7)) 'Messwert 0..1023
y6 = x6 '
x7 = Val(z(8)) 'Messwert 0..1023
y7 = x7 '
Danke für eure Hilfe
Gruß
Steffen

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit while schleife - Laufzeitfehler 91
09.12.2006 19:10:24
Kurt
Do While MSComm1.InBufferCount &lt 46 ' Erwartet werden 46 Zeichen
DoEvents
Loop
mfg Kurt
AW: Problem mit while schleife - Laufzeitfehler 91
09.12.2006 20:04:01
Steffen
Funktioniert leider auch nicht:
Do While MSComm1.InBufferCount &lt 46 ' Erwartet werden 46 Zeichen
DoEvents
Loop
das y0...y7 immer den gleichen Wert enthält ist richtig da ich mir die Option offen gehalten habe um mit der Variable Messfehler auszugleichen.
Ich gebe euch mal den gesamten Sub Code vieleicht ist der Zusammenhang ja irgendwo anders.

Private Sub chk1_Click()
Dim s, z() As String
Dim X, x0, x1, x2, x3, x4, x5, x6, x7 As Double
Dim Y, y0, y1, y2, y3, y4, y5, y6, y7 As Double
Dim s2 As String
Dim t, u, v, w, t2, u2, v2 As Integer
t = 2 'Startwert Aufzeichnung
u = 0 'Zähler
t2 = 2 'Startwert Aufzeichnung
u2 = 0 'Zähler
If Chk1 = True Then
Do
TextBox_Messwert1.Text = Range("B2") & "  Max Sollwert" ' Wert aus Zelle in Userform übertragen
While MSComm1.InBufferCount < 46 ' Erwartet werden 46 Zei
DoEvents
Wend
s = MSComm1.Input                'Jetzt sind sie da, als String
z = Split(s, ";")
x0 = Val(z(1))            'Messwert 0..1023
y0 = x0             'x ist der Messwert 0..5V
x1 = Val(z(2))            'Messwert 0..1023
y1 = x1                'x ist der Messwert 0..5V
x2 = Val(z(3))            'Messwert 0..1023
y2 = x2                 'x ist der Messwert 0..5V
x3 = Val(z(4))            'Messwert 0..1023
y3 = x3                 'x ist der Messwert 0..5V
x4 = Val(z(5))            'Messwert 0..1023
y4 = x4                 'x ist der Messwert 0..5V
x5 = Val(z(6))            'Messwert 0..1023
y5 = x5            '-0.07 Meßfehler ausgleichen
x6 = Val(z(7))            'Messwert 0..1023
y6 = x6             '-0.07 Meßfehler ausgleichen
x7 = Val(z(8))            'Messwert 0..1023
y7 = x7            '-0.07 Meßfehler ausgleichen
'Zellen im Excel aktualieren
If chk2 = True Then
v = Val(sec.Value)
u = u + 1
If u = v Then
Cells(2, 1) = Now
Cells(2, 2) = y0
Cells(2, 3) = y1
Cells(2, 4) = y2
Cells(2, 5) = y3
Cells(2, 6) = y4
Cells(2, 7) = y5
t = t + 1
u = 0
End If
If u > v Then
u = 0
End If
End If
DoEvents
Loop Until Chk1 = False
End If
End Sub

Ich hoffe ihr könnt damit was anfangen. Im es kurz zu erklären : Ich lese über die RS232 Schnittstelle Messwerte ein und visualisiere diese in den Excel Zellen. Der Restliche Code von die MSCOM32 Schnittstelle ist hier nicht mit gepostet.
Anzeige
AW: Problem mit while schleife - Laufzeitfehler 91
10.12.2006 09:49:15
ramses
Hallo
mal eine ganz blöde Fragen:
1. ist der COM-Port überhaupt geöffnet worden ?
Des weiteren erscheint mir das Leseprocedere vom Port nicht schlüssig.
Da ich hier nichts testen kann, schau mal hier vorbei
http://www.acroname.com/brainstem/examples/vbasicslave/vbasicslave.html
Gruss Rainer
AW: Problem mit while schleife - Laufzeitfehler 91
10.12.2006 10:37:45
Steffen
Hallo Rainer,
erstmal vielen Dank für dein Beispiel da ist vieles um einiges anders als wie bei mir. Da mein Script aber so schön kurz ist ist es mir schon wichtig den Fehler zu finden vor allem weil es super funktioniert.
Hier ist der Rest vom Script im Prinzip sieht es aus wie das Script was du gefunden hast.
Vielen Dank für deine Hilfe
Gruß
Steffen

Private Sub chk1_Click()
Dim s, z() As String
Dim X, x0, x1, x2, x3, x4, x5, x6, x7 As Double
Dim Y, y0, y1, y2, y3, y4, y5, y6, y7 As Double
Dim s2 As String
Dim t, u, v, w, t2, u2, v2 As Integer
t = 2 'Startwert Aufzeichnung
u = 0 'Zähler
t2 = 2 'Startwert Aufzeichnung
u2 = 0 'Zähler
If Chk1 = True Then
Do
TextBox_Messwert1.Text = Range("B2") & "  Max Sollwert" ' Wert aus Zelle in Userform übertragen
While MSComm1.InBufferCount < 46 ' Erwartet werden 46 Zei
DoEvents
Wend
s = MSComm1.Input                'Jetzt sind sie da, als String
z = Split(s, ";")
x0 = Val(z(1))            'Messwert 0..1023
y0 = x0             'x ist der Messwert 0..5V
x1 = Val(z(2))            'Messwert 0..1023
y1 = x1                'x ist der Messwert 0..5V
x2 = Val(z(3))            'Messwert 0..1023
y2 = x2                 'x ist der Messwert 0..5V
x3 = Val(z(4))            'Messwert 0..1023
y3 = x3                 'x ist der Messwert 0..5V
x4 = Val(z(5))            'Messwert 0..1023
y4 = x4                 'x ist der Messwert 0..5V
x5 = Val(z(6))            'Messwert 0..1023
y5 = x5            '-0.07 Meßfehler ausgleichen
x6 = Val(z(7))            'Messwert 0..1023
y6 = x6             '-0.07 Meßfehler ausgleichen
x7 = Val(z(8))            'Messwert 0..1023
y7 = x7            '-0.07 Meßfehler ausgleichen
'Zellen im Excel aktualieren
If chk2 = True Then
v = Val(sec.Value)
u = u + 1
If u = v Then
Cells(2, 1) = Now
Cells(2, 2) = y0
Cells(2, 3) = y1
Cells(2, 4) = y2
Cells(2, 5) = y3
Cells(2, 6) = y4
Cells(2, 7) = y5
t = t + 1
u = 0
End If
If u > v Then
u = 0
End If
End If
DoEvents
Loop Until Chk1 = False
End If
End Sub


Private Sub UserForm_Initialize()
Set MSComm1 = New MSComm
MSComm1.CommPort = 1
MSComm1.Settings = "38400,N,8,1"
MSComm1.RThreshold = 1
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True
End Sub


Private Sub UserForm_Terminate()
If MSComm1.PortOpen = True Then ' Offene ComPort verbindung schließen
MSComm1.Output = "stop_adc"  ' Analogport des Controllers wegschalten
MSComm1.PortOpen = False
End If
Unload UserForm 'Userform beenden
End Sub

Anzeige
AW: Problem mit while schleife - Laufzeitfehler 91
10.12.2006 12:12:38
ramses
Hallo
Sorry,... aber das verstehe ich jetzt nun wirklich nicht:
"..wichtig den Fehler zu finden vor allem weil es super funktioniert..."
Tut es nun,.... oder tut es nicht ?
Gruss Rainer
AW: Problem mit while schleife - Laufzeitfehler 91
10.12.2006 13:51:17
Stefan
Hallo Steffen,
Hast Du schon mal ein

If Not MSComm1.PortOpen Then Exit Sub

in Deiner Schleife probiert?
Du schreibst ja du hast das Problem wenn du Deine Form schliesst. Zu der Zeit ist Dein Port ja tatsaechlich zu, und demnach wirst Du nicht mehr anders aus der Schleife rauskommen.
Schoene Gruesse
Stefan
AW: Problem mit while schleife - Laufzeitfehler 91
10.12.2006 18:47:25
Steffen
Danke Stefan für den Tip aber dieser Funktioniert leider auch nicht wie gewollt ich werde morgen mal versuchen das ganz Script umzustellen in der Hoffnung das es was bringt. Egal welche Schleifen erstelle um die Abfrage zu beenden es hilft einfach nichts. Na ja ich hoffe ich finde ne andere Lösung.
Vielen Dank an alle für die Hilfe
Gruß
Steffen
Anzeige
AW: Problem mit while schleife - Laufzeitfehler 91
09.12.2006 19:14:58
ramses
Hallo
Auf die Schnelle würde ich den gleichen Vorschlag wir Kurt "Do Loop" machen,... aber was mich vielmehr irritiert
x0 = Val(z(1)) 'Messwert 0..1023
y0 = x0 'x ist der Messwert 0..5V
Kannst du mir den tieferen Sinn dieser Variable "y0" erklären ?
In den "Y" Variablen stehen doch immer die gleichen Werte wie in den entsprechenden "X" Variablen ?
... oder versteh ich da was falsch ?
Gruss Rainer

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige