5.2k Aufrufe
Gefragt in Tabellenkalkulation von kauz Mitglied (291 Punkte)
Hallo Leutz..

bin am verzweifeln.
Excel meckert eine Programmzeile an, in der 'chr(13)' verwendet wird:
If retvalO <> 0 Then MsgBox "Fehler beim Öffnen der seriellen Schnittstelle!" & Chr(13) & "Fehlernummer: " & retvalO

In der betrffenden Procedur wird auf die Com-Schittstelle zugegriffen.

Wenn das angeschlossene Gerät einen Fehler meldet, so wird mit der obigen Zeile dieser in einer MsgBox angezeigt.

Das fatale daran ist... nach meiner Erkenntniss funzt es bei den meisten Nutzern. (von Excel2000 über 2003 bis 2007)

Einmal meldete sich ein Excel2000 Nutzer mit diesem Problem.
Nach installieren der AddIns: (Analyse-Funktionen - VBA) und (Analyse-Funktionen) ging es.

Nun hab ich einen Excel2007-Nutzer, bei dem es überhaupt nicht ins Laufen kommt.
Hat vielleicht ein VBA-Experte dazu noch Ideen?

Wo kann ich noch nach Unterschiede zwischen dem Excel wo es geht und dem Execl wo es nicht geht suchen.

Ich hab Excel2007 Home and Student... der andere eine 'normale' Excel2007-Lizens.

Für Ideen wäre ich sehr dankbar...


Gruß
Kauz

10 Antworten

0 Punkte
Beantwortet von
Hi,

Fehlermeldung lautet: Fehler beim Kompilieren: Project oder Bibliothek nicht gefunden?

Ich kann Dir die Ursache dafür leider nicht definitiv benennen, habe aber eine Mappe hier auf dem Rechner, die das selbe Symptom zeigt. Nehme ich Deine MsgBox, und kopiere den Code in eben diese "Problem"-Mappe-> Fehlermeldung wie oben. Nehme ich hingegen eine andere existierende Mappe oder auch eine Neue, und kopiere den selben Codeschnipsel dort hinein-> läuft wie erwartet.
(Immer der gleiche Rechner und somit auch immer das gleiche Excel 2007.)

Schaue ich in dieser Mappe in die Liste der Verweise (VBA-Editor, Menü "Extras", "Verweise") findet sich dort ein Hinweis auf einen "NICHT VORHANDEN: ...." Verweis, der auch mit einem Haken angewählt ist. Entferne ich nun den Haken bei diesem Verweis, läuft der Code auch wieder in der Problemmappe. Evtl. kann Dir das hilfreich sein.

Eine andere Möglichkeit kurzfristig für Abhilfe zu sorgen: So es nur um Chr(13) in der MsgBox geht, liesse sich dies durch die Konstanten vbCr oder auch vbCrLf im Code ersetzen.

bye
malSchauen
0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo malSchauen...

vielen Dank für Deine Ausführungen!

Bei meiner Nachfrage wurde mir versichert, das in den Verweisen kein Nicht vorhanden stünde... darauf hab ich auch erst getippt.

Er hat inzwischen ein Addin mit Namen < OGAAddin.dll> eingebunden, und meint nun liefe es.

Ich hab diese Dll auf meinem Rechner nicht finden können.

Wahrscheinlich gibt es zwischen Excel2007 Home and Student und einem normalen Excel2007 erhebliche Unterschiede in dieser Richtung.

Den Tipp mit <cbcr> werde ich aufgreifen, und beim nächsten Prolemfall testen.

Das bringt mich doch wieder ein Stück weiter...Danke

Gruß
Kauz
0 Punkte
Beantwortet von
Hallo Kauz,

es wird doch wohl nicht daran liegen, dass Du einmal

retvalO (==> letzter Buchstabe ist O wie Otto!)

und einmal

retval

geschrieben hast? (Bei der Fehlermeldung wie in AW1 eher nicht.)
Option Explicit verwendet?
Unbekannter Bezeichner?
... War nur so ein Gedanke.

MfG Charlotte
0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo Charlotte_S...
nein, daran kann es nicht liegen.
Hab beim Kopieren des Codeschnipsels aus Versehen das 'O' abgeschnitten... aber gut aufgepasst! :-)

Gruß
Kauz
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Da gibt es doch mehrere Möglichkeiten: Dank mehrerer AddIns oder sonstwas nicht originalem ist bereits etwas als Chr definiert oder deklariert und der erwartet richtige Gebrauch läuft ins Leere. Doof nur, dass die eigentliche Fehlermeldung hier immernoch nicht betitelt wurde.

Übrigens rate ich auch zu vbCrLf (denn das wird exotisch genug geschrieben, dass die Überdeklarierung eines anderen Symbol weniger wahrscheinlich ist).
0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo son_quatsch...
klingt erstmal einleuchtend... ok

Mit der Benutzung von vbCr hab ich das Chr(13)-Problem umgangen.

Aber was mach ich damit:

open verz for appand As #2
If spDat(1) = 1 Then
Print #2, Chr(34); Date; Chr(34); ",";
Print #2, Chr(34); Time; Chr(34); ",";
If FormDatenfluss.Visible = True Then
FormDatenfluss.TxtIn.Value = FormDatenfluss.TxtIn.Value & Chr(34) & Date & Chr(34) & ", " & _
Chr(34) & Time & Chr(34) & ", "
End If
End If
close #2

Weiß einer für die Anführungszeichen eine andere Alternative?
(so gehts nicht: Print #2, """; Time; """; ",";.....einfach drei Gänsefüßchen klappt nicht!)

Um die erzeugte Datei weiterverarbeiten zu können ist es am einfachsten, das Datum und die Uhrzeit in Gänsefüßchen' einzuschließen.

Zur Not muß ich halt ein anderes Zeichen nehmen, was aber mehr Aufwand für's Einlesen dieser Datei bedeutet.

Vielen Dank für die bisherigen Tipps....

Gruß
Kauz
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
MsgBox "Hallo, ich habe ""Gänsefüßchen"" im Text"
MsgBox """"
0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo....

Hier Beispiele:
Normal mit Chr(34)... so soll es aussehen
"07.11.2009 ","20:29:50 ", 652 , 492 , 508 , 536
"07.11.2009 ","20:30:00 ", 663 , 490 , 508 , 536

Mit drei Gänsefüßchen
"; Date; ", "; Time; ", 668 , 481 , 503 , 516
"; Date; ", "; Time; ", 669 , 481 , 504 , 516

Alternativ mit Bindestrich

-09.11.2009 -, -11:19:00 -, 672 , 481 , 503 , 516
-09.11.2009 -, -11:19:10 -, 663 , 481 , 503 , 516


Hier zwei Variantenmit Gänsefüßchen:

Print #2, """ & ; Date; & """; ", ";
Print #2, """; Time; """; ", ";

Ergebnis:

" & ; Date; & ", "; Time; ", 666 , 484 , 505 , 518
" & ; Date; & ", "; Time; ", 660 , 484 , 505 , 517

Wo ist mein Denkfehler?

Soo, nu muß zur Spätschicht... meld mich heute abend wieder....

Gruß
Kauz
0 Punkte
Beantwortet von
Hi,

Vor der Spätschicht schon so durch den Wind? ;-)

Dein :
Print #2, Chr(34); Date; Chr(34); ",";
Print #2, Chr(34); Time; Chr(34); ",";
Print #2, "soll"
liesse sich z.B. durch
Print #2, """"; Date; """"; ",";
Print #2, """"; Time; """"; ",";
Print #2, "ist mit ;"
ersetzen.

Wobei ich pers. lieber mit dem Verkettungsoperator & arbeite:
Print #2, """" & Date & " """ & ",";
Print #2, """" & Time & " """ & ",";
Print #2, "ist mit &"
da ich dort (für meinen Geschmack) die Leerzeichen besser unter Kontrolle habe.

btw: Wie von son_quatsch richtig bmerkt, hast Du die wahre Fehlermeldung noch immer nicht hier benannt. Die wäre aber bei der Suche nach der eigentlichen Ursache wohl doch hilfreich. ;-)

bye
malSchauen
0 Punkte
Beantwortet von kauz Mitglied (291 Punkte)
Hallo Leutz...

@ malSchauen
Nicht durch den Wind... aber vielleicht noch nich richtig wach :-)

Ok, nu zum Thema:
Als erstes die eingeforderte Fehlermeldung
<Kompilierungs-Fehler im verborgenen Modul:InOut>

Der code:
Sub Pon()
ActiveSheet.Unprotect
ActiveSheet.Cells(2, 11).Font.ColorIndex = 4
FormMitte.CmdTool.Enabled = True
FormMitte.CmdIn.Enabled = True
FormMitte.CmdOut.Enabled = True
FormMitte.CmdTime.Enabled = True
FormMitte.CmdWriteMerker.Enabled = True
FormMitte.CmdAE.Enabled = True
FormMitte.CmdGo.Enabled = True
FormMitte.CmdStop.Enabled = True
FormMitte.CmdTimeIn.Enabled = True
' --------------- ComPort öffnen ------------------

retvalO = Open_ComPort(com_port_nr:=ActiveSheet.Cells(1, 10), baudrate:=ActiveSheet.Cells(2, 14))
If retvalO <> 0 Then MsgBox "Fehler beim Öffnen der seriellen Schnittstelle!" & Chr(13) & "Fehlernummer: " & retvalO
End Sub
Bei einem Rechner war der Prozedurname <Sub Pon()> gelb und das <Chr> invers markiert. (Lapptop)

Bei einem anderen war nur die Zeile < retvalO=Open...> gelb markiert (PC)

Nach der Einbindung der AddIns: (Analyse-Funktionen - VBA) und (Analyse-Funktionen) kam folgendes:

<Fehler beim Kompilieren: Projekt oder Bibliothek nicht gefunden>
(Bei den Verweisen stand kein Nicht vorhanden)

Dann ein weiteres AddIn eingebunden (Mir unbekannt) und es danach läuft es anscheinend.. siehe AW2.

Ich hab selbst zu keiner Zeit vor den Problemrechnern gesessen... weiß also nicht alles, was gemacht wurde.

Sooo, nun zu den Gänsefüßchen.... hmmmmm.... upps :-)

@ son quatsch
@ malSchauen
Erstmal... es funzt so wie ihr mir das vorgeschlagen habt...
Ich verstehe nur nicht, warum ich 4 Gänsefüßchen schreiben muß, wenn ich nur eines als Text haben will...
wenn ich etwas als Text einfügen will, setze ich davor und dahinter so'n Zeichen...
schließlich muß ich den Text ja auch nicht zweimal schreiben, um ihn einmal darzustellen :-) :-)
Ok,.. es funktioniert... ich werde die Stellen im Code in der Art austauschen, und hoffe das es dann ein Haken weniger gibt.

Danke...Gruß
Kauz
...