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

Ende der String Variable

Ende der String Variable
02.03.2005 11:51:07
Sergej
Hallo Forum!!!
ich habe wieder ein kleines Problem.
Erst mal meiner Code
----
A$ = Space$(20)
i = READSTRING(A$)
ThisWorkbook.Sheets("Dummy").Range("F13").Value = Mid$(A$, 1, i)
----
Mid der Mid$ funktion lese ich meine String Variable A$,
die eine Lange von i zeichen hat.
Jetzt will ich, dass von der länge i immer zwei lezten Zeichen abgezogen werden
mit dem Mid$(A$, 1, i-2) funzt, aber manchmal meldet main Compailer ein Fehler an der Stelle.
í (Zeichenkettelänge) hat leider keine feste Länge aber lezten zwei Zeichen
bezeichnen End of String , was ich in der Darstellung nicht brauche.
oder kann man das aus Excel lösen können in der Zelle "f13" steht z.b folgendes
1,2345## ( statt # habe ich zwei Kästchen)
Wer kann helfen?
Danke im Voraus
Serge

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ende der String Variable
02.03.2005 13:14:42
Reinhard
Hi Sergej,
hilft dir vielleicht folgendes:
wert = Application.WorksheetFunction.Clean(wert)
Clean wird in der Excelhilfe (nicht vba-Hilfe) unter "Säubern" erklärt.
Gruß
Reinhard
AW: Ende der String Variable
02.03.2005 13:31:46
Sergej
Hallo Reinhard!! leider unter "säubern" ist nichts nuzliches zu finden.
Aber trotzdem erst mal Danke!
in i wird die Länge des empfangenes Strings gespeichert, was dann an die Funktion Mid als String-Länge übergeben wird. So verstehe ich das zumindest.
Übrigens i declariere ich As Integer
i=READSTRING(A$)
k=i-2
Mid$(A$,1,k) bringt auch nichts...habe immer noch diese Fehlermeldung
Vielleicht liegt es an der falschen Schreibweise? so etwa?
Mid$(A$,1,[i-2])
Anzeige
AW: Ende der String Variable
02.03.2005 13:58:39
Martin
Hallo Sergej,
poste mal den kompletten Code.
Werden denn die "seltsamen" Zeichen am Ende mitgezählt? Teste mal in der Tabelle mit
=Länge(A1)
In VBA kannst Du mal versuchen
Left(A$, Len(A$) - 2)
Gruß
Martin Beck
AW: Ende der String Variable
02.03.2005 14:19:31
Sergej
Gruß Martin! und Danke
Werden denn die "seltsamen" Zeichen am Ende mitgezählt?
Diese seltsamen Zeichen bezeichnen EOS = End of String!
ich empfange eine koplette Zeichenkette vom Gerät
1,456##
1,3456##
1,23456789## (seltsamenZzeichen bedeuten Ende der Zeichenkette)
und die brauche ich nicht...
A$ As String ist eine String Variable
Anzeige
AW: Ende der String Variable
02.03.2005 14:30:31
Martin
Hallo Sergej,
1) Wieso postest Du nicht den Code?
2) Wieso beantwortest Du nicht meine Nachfrage, sondern schreibst nochmal, was Du schon längst erklärt hast?
3) Hast Du meinen letzten Vorschlag ausprobiert? Wenn ja, mit welchem Ergebnis? Wenn nein, warum nicht?
Wenn Du hier Hilfe willst, solltest Du auf Antorten angemessen reagieren.
Gruß
Martin Beck
AW: Ende der String Variable
02.03.2005 15:37:48
Sergej
werde Abends erscheinen und beantworte alles
AW: zu Martin Beck
02.03.2005 21:45:44
Sergej
lieber Martin es tut mir leid, dass ich nicht gleich geantwortet habe..
ich musste mein Arbeitsplatz verlassen
Ich habe deine Hilfe sehr zu schätzen!
Nun zu meinem Code:
'ich benutze RSAPI.DLL von Herrn B. Kainka zur Ansteuerung eines Gerätes über seriellen Schnittstelle.
Declare

Function READSTRING Lib "RSAPI.DLL" (ByVal $S As String) As Integer
Declare 

Sub READSTRING Lib "RSAPI.DLL"(ByVal $S As String)
'#### mit Hilfe dieser Funktion kann man eine Zeichenkette über serielle Schnittstelle empfangen.########
'Hier folgen noch andere Declarationen

Sub cmdSenden()
OPENCOM "COM1:9600,N,8,1"
SENDSTRING "kmh,g"+chr$(13)  '##Sende ein Commando, um Daten vom Gerät anzufordern
A$ = Space$(20)             'reserviere 20 bytes für die eingelesene Zeichenkette
i = READSTRING(A$)         'i steht für die Länge der eingelesenen Zeichenkette
RTS 1                     'Ausschalten von RTS-Leitung, ist vom Endgerät abhängig, es kann auch z.B DRS sein
ThisWorkbook.Sheets("Dummy").Range("F13").Value = Mid$(A$, 1, i)
End Sub

Nun wie gesagt
ThisWorkbook.Sheets("Dummy").Range("F13").Value = Mid$(A$, 1, i-2)' bringt mir das was ich will, aber wird nach ein paar mal mit Fehlermeldung zurückgemeldet.
Ich habe an der zelle "F13" die Funktion LÄNGE(F13) ausprobiert und sie zeigt mir das Wert 20...obwohl in der Zelle stand 12.2334# (# steht für das Kästchen)
Nun entspricht dieser Wert genau diesen in A$ reservierten bytes
zur Erinnerung A$ = Space$(20)
Wenn ich der Inhalt der Zelle genau anschaue steht da nämlich folgendes .(das was in "")
"12.345 "nach dem Kästchen noch Leerzeichen und mit dem Komma
habe ich falsch gesagt da steht nähmlich ein Punkt

Dein Vorshlag habe ich mit
Mid$(A$, 1, Len(A$) - 2)
und mit
Left(A$, Len(A$) - 2) ausprobiert leider hat das nicht's gebracht, werde dann trozdem Morgen nochmal versuchen
trozdem vielen Dank für deine Hilfsbereitschaft und aktive Teilnahme!!!
Anzeige
Formellösung
03.03.2005 11:18:07
Martin
Hallo Sergej,
String steht in A1. Folgende Formel wandelt den String in eine Zahl um:
=WERT(GLÄTTEN(WECHSELN(SÄUBERN(A1);".";",")))
Gruß
Martin Beck
AW: Formellösung besten Dank funzt erstmal
03.03.2005 12:07:13
Sergej
Danke.Danke Danke das funzt prima !!!
nun jetzt suche ich noch eine VBA Lösung
VBA-Lösung
03.03.2005 12:32:58
Martin
Hallo Sergej,
in VBA muß man die der Formellösung entsprechenden Worksheetfunctions nehmen.
Versuche mal statt der Zeile
ThisWorkbook.Sheets("Dummy").Range("F13").Value = Mid$(A$, 1, i)
folgenden Code:
With Application.WorksheetFunction
A$ = .Trim(.Clean(A$))
End With
ThisWorkbook.Sheets("Dummy").Range("F13").Value = A$
Gruß
Martin Beck
Anzeige
AW: VBA-Lösung Danke funzt!!!!!!!!!!
03.03.2005 13:36:27
Sergej
Martin kannst bitte noch kurz erläutern ,wárum steht vor Trim und Clean einen Punkt?
A$ = .Trim(.Clean(A$))
AW: VBA-Lösung Danke funzt!!!!!!!!!!
03.03.2005 14:02:41
Martin
Hallo Sergej,
weil ich schreibfaul bin. ;-) Im Ernst, schau Dir die VBA-Hilfe zu With ... End With an.
Gruß
Martin Beck
AW: Ende der String Variable
02.03.2005 14:57:59
Reinhard
Tabellenblattname: Tabelle1
A   |    B    |   C   |
1| 1,234 | 1,234 | 1,234 |
Benutzte Formeln:
B1:  =A1&ZEICHEN(10)&ZEICHEN(13)
C1:  =SÄUBERN(B1)
Gruß
Reinhard

AW: zu Reinhard
02.03.2005 22:04:41
Sergej
Erst mal Vielen Dank für deine Antworten !!!!!!!
Zur deine frage bezüglich Funktion READSTRING siehe bitte mein vorlezter Posting
Ich habe mit Säubern schon ausprobiert, an deinem Beischpiel klapts wunderbar...leider habe ich dir falsch gesagt....
A | B | C |
1| 1,234 | 1,234 | 1,234 |
ich habe nähmlich keine Komma sonder ein Punkt...dann meldet
die Funktion Säubern folgendes
12.374 12374 12374 :also Kommazeichen verschwindet dann..
Vielleicht kann mann irgendwie nur die Ziffern auslesen und den Rest nicht?
mein string in der Zelle F13 zieht so aus:
12.4567 ' noch 12 Leerzeichen habe oben erklärt warum so...
Wenn ich eine Zeichenkette mit fester länge hätte, könnte ich einfach
Mid$(A$,1,7) 7 ersten Zeichen aus dem String A4 auslesen
bei mir verschiebt sich die Kommastelle immer nach rechts
1,2347
12,2345
112,2345
Werde morgen noch weiter probieren
Gruß Serge
Anzeige
Komma Punkt Komma Punkt ? was gilt jetzt?
03.03.2005 05:54:42
Reinhard
Hi Serge,
wenn du magst, lies dir mal alle deine Postings durch, auch und grad die Antworten.
Du gehst auf die Antworten absolut nicht ein :-(
und dazu kommen noch Denkquizze ob du nun Komma oder Punkt meinst:
(und das nachfolgnde ist aus deinem letzten Posting, also nur aus einem!)
...ich habe nämlich keine Komma sonder ein Punkt...dann meldet
12.374 12374 12374 :also Kommazeichen verschwindet dann..

hast du nun 12.374 oder 12,374?
12.4567 ' noch 12 Leerzeichen habe oben erklärt warum so...
nein, wenn a$ 20 Zeichen lang ist hast du nur noch 11, 12.4567 sind sieben Zeichen plus die beiden steuerzeichen sind neun also haste nur noch 11 leerzeichen, wobei da auch unklar blieb ob die später noch gebraucht werden nach dem Einlesen der Schnittstelle.
bei mir verschiebt sich die Kommastelle immer nach rechts
sagtest du nicht eben du hast keine Kommas sondern Punkte, ?
1,2347
12,2345
112,2345
Werde morgen noch weiter probieren
Schön, ich werde nur noch antworten wenn du mal klarere Fragen stellst.
Und, sei bitte nicht geschockt von dem was du grade liest, es ist konstruktive Kritik, schwr zu verdauen,may be, aber wichtig.
Gruß
Reinhard
Anzeige
AW: Komma Punkt Komma Punkt ? was gilt jetzt?
03.03.2005 12:30:54
Sergej
Hello Rainhard!
Eindeutige Antwort Punkt Punkt Punkt...aber der Excel braucht für die weiteren
Calculationen ein Kommazeichen..
Ich habe nähmlich alle deine Vorschlage ausprobiert, ich finde dass,du mit deine Kritik nicht ganz gerecht bist..
vielleicht liegt es an meine Schreibfertigkeiten..bin nähmlich kein Deutscher.
nun zur Sache...
Es ist ein Gerät der keine LCD-Anzeige werwendet. Es werden kleine Module
verwenden die eine Ziffer 8 und ein Punkt unten links darstellen können.
_
/_/
./_/
So etwa... Da kommt dieser Punkt ...
20 byets war eigentlich übertrieben von mir, man braucht maximal 11 ( 9 für 1234.1234 und zwei für EOS-zeichen) Komisch das Mid$(A$,1,i-2) zu gewünschten Ergebnis führt
vo A$ eigentlich 20 Byets enthält und wenn ich von i As Integer 20-2 abziehe komme ich auf 18 , dass heißt noch Leerzeichen am Ende.
Mag sein, dass wenn das erst in Speicher passiert , Leerzeichen werden einfach ignoriert und abgezogen werden nur zwei lezten Steuerzeichen.
Wenn der Inhalt der A$ vollständig in die Zelle kopiert wird , sind es allen 20 reaservierten Byets.
Anzeige
AW: Komma Punkt Komma Punkt ? was gilt jetzt?
04.03.2005 23:09:33
Reinhard
Hi Serge,
mit "klarere Fragen" meinte ich absolut nicht dass deine Fragen/Aussagen wegen der deutschen Sprache unklar oder mangelhaft waren.
Es fehlten schtlichtweg wichtige Informationen, du gingst nicht auf die Antworten ein, das hat nix mit Sprache zu tun.
Es hat damit was zu tun, dass du dein Problem in Excel siehst, dazu Hilfe erbittest, aber es den Helfenden sehr schwer machst, indem du Informationen nicht rausrückst, die notwendig sind um das Problem zu lösen. Du bist da absolut kein Einzelfall :-(
Hast es ja gesehen, erst dauerte es viele Postings bis klar wurde was genau du meinst, dann hat Martin das in Minutenschnelle gelöst.
Gleich das Anfangsposting mit diesen Informationen versehen, wir hätten uns viele Postings erspart.
Exakt das meine ich mit "klarere Fragen".
Gruß
Reinhard

Anzeige
AW: Ende der String Variable
02.03.2005 14:16:58
Reinhard
Hi Sergej,
wenn du da in Excel im Text von A1 hinten 2 "Kästchen " an dem String siehst, dann macht die Funktion
=SÄUBERN(A1) das was du willst, diese Kästchen entfernen.
Und mein vba-Code entspricht dem =SÄUBERN(A1) in Excel.
Ansonsten, was soll dieses Readstring denn sein, (gibts in Exel2000 nicht)?
2Beispiele wenn dir ".clean" warum auch immer nicht passt:

Sub tt()
A$ = Space$(20)
' i = READSTRING(A$) was soll denn READSTRING sein?
ThisWorkbook.Sheets("Dummy").Range("F13").Value = Mid$(A$, 1, Len(A$) - 2)
End Sub


Sub tt2()
A$ = Space$(20)
' i = READSTRING(A$) was soll denn READSTRING sein?
ThisWorkbook.Sheets("Dummy").Range("F13").Value = Left(A$, Len(A$) - 2)
End Sub

Gruß
Reinhard

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige