UBound --> compile error expected: identifier

Hallo Rolf,

bevor Du dieses Projekt selbst fertig bekommst, mit etwas Hilfe von uns, musst Du erst mal verstehen, was VB tut und den Debugger kennenlernen.

Ich schlage vor, wir fangen, von deinem Projekt völlig abgekoppelt, erst mal mit Grundlagen an.

Fang ein neues Projekt an.

Leg auf die Form einen Button, ein Label und eine Textbox.

Der Anwender, im Test also Du, soll in das Textfeld mehr als zwei Wörter eintragen.

Wird dann auf den Button geklickt, soll der Inhalt der TextBox an eine Funktion übergeben werden, die das mittlere Wort oder das Wort nach der Mitte, (je nachdem ob eine gerade oder ungerade Anzahl Wörter eingegeben wurde) zurückgeben und dieses Wort soll dann im Label angezeigt werden.

Wenn Du das hinbekommen hast, hast Du schon so viel von VB verstanden, daß Du weißt warum Deine bisherigen Codes alle nicht laufen.

Ich bin mal gespannt, wie Dein Code dazu aussieht.

Gruß Rainer

Hmmmm,

also das Ausgeben des Wortes im Textfeld is kein Problem.

-))

Aber so ganz genau weiss ich jetzt ned, wie da das mit dem mittleren Wort meinst.

Wenn 4 Wörter dann soll er mir welches ausgeben?

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

also das Ausgeben des Wortes im Textfeld is kein Problem.

-))

OK, schön. Da soll aber nicht nur ein Wort stehen.

Aber so ganz genau weiss ich jetzt ned, wie da das mit dem
mittleren Wort meinst.

Wenn im Textfeld zum Beispiel steht:

Text1 Text2 Text3

Dann soll in das Label geschrieben werden:

Text2

Wenn da steht:

Text1 Text2 Text3 Text4

Dann soll in das Label:

Text3

Und bei:

Text1 Text2 Text3 Text4 Text5

Soll ebenfalls:

Text3

im Label erscheinen.

Aber bitte unter Verwendung einer Funktion, das ist ein Teil von dem, was Du üben und verstehen sollst.

Bei mir ist der Code übrigens 13 Zeilen lang, das nur als Anhaltspunkt. Es gibt noch andere Wege, dann können es auch ein paar Zeilen mehr werden. Eine andere Lösung, die mir einfällt wäre dann 15 Zeilen lang.

Gruß Rainer

OT Split und Vb5.0

Bei mir ist der Code übrigens 13 Zeilen lang, das nur als
Anhaltspunkt. Es gibt noch andere Wege, dann können es auch
ein paar Zeilen mehr werden. Eine andere Lösung, die mir
einfällt wäre dann 15 Zeilen lang.

Hallo Rainer,

nur als Hinweis, in VB5.0 ist Split() nicht vorhanden.

Gruß
Reinhard

Hallo Rainer,

wie ich sehe hat Rolf dennoch imenze Schwierigkeiten damit. Eine FileSuche zu realisieren ist ja relativ simple und fix gemacht. Aber eine Suche nach dem Inhalt naja das scheinbar nicht.

Was haelst du davon, wenn wir die Klasse um 2 Eigenschaften erweitern.

1.Eigenschaft -> SearchContent also True oder False was festlegt das der Inhalt des gefundenen Files durchsucht wird

2.Eigenschaft Content als String was den Suchstring festlegt.

Dann in der Klasse bevor das Ereignis MatchFound ausgelöst wird, einfach SearchContent abfragen und wenn das True ist, so durchsuchen wir das File, wird es gefunden dann lösen wir das Erergnis aus, wenn nicht dann nicht.

Sollte schnell realisiert werden und die Klasse und macht sie noch felexibler. Was haelst du davon und wenn ja implementierst du oder ich das ? Ist ja nur noch nen Zusammensetzen :wink:

MfG Alex

Hallo Alex,

wie ich sehe hat Rolf dennoch imenze Schwierigkeiten damit.
Eine FileSuche zu realisieren ist ja relativ simple und fix
gemacht. Aber eine Suche nach dem Inhalt naja das scheinbar
nicht.

ja, Rolf hat ein erhebliches Problem mit VB.

Was haelst du davon, wenn wir die Klasse um 2 Eigenschaften
erweitern.

1.Eigenschaft -> SearchContent also True oder False was
festlegt das der Inhalt des gefundenen Files durchsucht wird

2.Eigenschaft Content als String was den Suchstring festlegt.

Der String reicht doch aus. Ist er leer, muss nicht nach einem Inhalt gesucht werden.

Dann in der Klasse bevor das Ereignis MatchFound ausgelöst
wird, einfach SearchContent abfragen und wenn das True ist, so
durchsuchen wir das File, wird es gefunden dann lösen wir das
Erergnis aus, wenn nicht dann nicht.

Ja, korrekt.

Sollte schnell realisiert werden und die Klasse und macht sie
noch felexibler. Was haelst du davon und wenn ja
implementierst du oder ich das ? Ist ja nur noch nen
Zusammensetzen :wink:

Bist Du so nett und realisierst das? Ich habe Deinen Code nur oberflächlich betrachtet, wenn Du das selbst einbaust, geht das sehr viel schneller.

Nimm bitte die FAQ:3000 als Basis, ich ersetze den Code dort dann durch den Neuen.

Gruß Rainer

Hallo Reinhard,

nur als Hinweis, in VB5.0 ist Split() nicht vorhanden.

*gg* das ist dann die 15-Zeilen-Variante. :smile: Stimmt, ich habe Split verwendet.

Gruß Rainer

*gg* das ist dann die 15-Zeilen-Variante. :smile: Stimmt, ich habe
Split verwendet.

Hallo Rainer,

an sowas kann ich nicht vorbei :smile:

Ich habe diese Zeilenanzahlen: (Logo ohne Tricks mit Doppelpunkt o.ä.)
Vorausgestzt wird ein Leerzeichen als Trenner im Textfeld.

Achja, Replace kennt VB5.0 auch nicht.

Tabellenblatt: [Mappe1]!Tabelle2
 │ A │ B │ C │ D │ E │ F │
──┼─────────────────┼───────┼─────────────────┼───────────────┼────────────┼────────┤
1 │ Option Explicit │ Split │ Option Explicit │ comman1\_click │ Function() │ Zeilen │
──┼─────────────────┼───────┼─────────────────┼───────────────┼────────────┼────────┤
2 │ Ja │ Ja │ 1 │ 3 │ 5 │ 9 │
──┼─────────────────┼───────┼─────────────────┼───────────────┼────────────┼────────┤
3 │ Nein │ Ja │ 0 │ 3 │ 4 │ 7 │
──┼─────────────────┼───────┼─────────────────┼───────────────┼────────────┼────────┤
4 │ Ja │ Nein │ 1 │ 3 │ 8 │ 12 │
──┼─────────────────┼───────┼─────────────────┼───────────────┼────────────┼────────┤
5 │ Nein │ Nein │ 0 │ 3 │ 8 │ 11 │
──┴─────────────────┴───────┴─────────────────┴───────────────┴────────────┴────────┘
Benutzte Formeln:
F2: =SUMME(C2:E2)
F3: =SUMME(C3:E3)
F4: =SUMME(C4:E4)
F5: =SUMME(C5:E5)

A1:F5
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard

Hallo Reinhard,

Ich habe es jetzt mit dem Befehlsumfang von VB5 gebaut, OK, es sind 18 Zeilen geworden. Ich bin mal auf Deine Lösung gespannt, bei mir ist die Funktion jetzt 14 Zeilen lang.

Ohne Doppelpunkte natürlich aber mit Komma beim ‚Dim‘. Leerzeilen nicht mitgezählt, aber in der ersten Zeile steht nur ‚Option Explicit‘, die zählt mit.

Wenn Code von Rolf kommt, poste ich meinen auch.

Gruß Rainer

Ich habe es jetzt mit dem Befehlsumfang von VB5 gebaut, OK, es
sind 18 Zeilen geworden. Ich bin mal auf Deine Lösung
gespannt, bei mir ist die Funktion jetzt 14 Zeilen lang.

Ohne Doppelpunkte natürlich aber mit Komma beim ‚Dim‘.
Leerzeilen nicht mitgezählt, aber in der ersten Zeile steht
nur ‚Option Explicit‘, die zählt mit.

Hallo Rainer,

ja, Komma bei Dim ist natürlich erlaubt.

Sorry, ich bin Exceltabellen gewöhnt, ich formulier es mal so:

Wenn ich Option Explicit nutze und Split() nutze so habe ich insgesamt 9 Codezeilen
Wenn ich Option Explicit nutze und Split() nicht nutze so habe ich insgesamt 12 Codezeilen
Wenn ich Option Explicit nicht nutze und Split() nutze so habe ich insgesamt 7 Codezeilen
Wenn ich Option Explicit nicht nutze und Split() nicht nutze so habe ich insgesamt 11 Codezeilen

Da ich ja Vb5.0 habe fiel es mir leicht nur VB% Befehle zu nutzen *gg*
Die Split()-Funktion bei mir ist ein Nachbau.

Gruß
Reinhard

Ok, nachdem ich nun Stunden damit verbrachte es über die Splitfunktion zu versuchen und es scheinbar nicht geht, werde ich noch n Weilchen brauchen.

Aber da es heute nur noch 20% beim Praktiker gibt, kann es gut Nachmittag werden bis ich die Lösung habe. :smile:)))))))

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Nachgefragt zum Thema…
…was mich interessiert :smile:

Hallo Alex,

ich habe dir soeben gemailt. Schau bitte auch in deinem Spamordner oder sonstwo ob sie ankam.

Mail mir dann zurück ob sie ankam, also nicht hier antworten.
Dann kann ich diesen Beitrag löschen, das macht dann dies Beitragsfolge unheimlich kürzer *hihi*

Btw: Ich finde alle Dateien die zwar vorhanden sind, aber nicht geöffnet werden konnten weil sie Lesefehler haben oder der Zugriff nicht gestattet ist weil sie grad offen sind oder Rechte im Netzwerk fehlen o.ä. sollten auch mit entsprechendem Hinweis gelistet werden.

Gruß
Reinhard

Moin, moin,

ne, sorry, krieg ich ned hin. Keinen blasen Dunst wo, wie, was, wann ich hier wo ansetzten soll.
Die Wörter zählen geht, dass bekomm ich auch hin.
Also den Inhalt der Text1 ausgeben und die Wörter der text1 zählen geht. Nur wie ich dann eben hier nur das mittlere bzw dritte Wort ausgeben…sorry, check ich nicht.

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rolf,

schade, denn das Beispiel würde Dich zwingen, Variablen zu verwenden, Werte zu übergeben und die Eigenschaften von Steuerelementen richtig zu lesen und zu setzen.

Ich versuche es dann mal mit meinem Code und damit, den zu kommentieren.

Wenn Du auch nur ein Zeichen davon nicht verstehst, bitte ich um Rückfragen. Anders kommen wir nicht zu dem Punkt, an dem Du Anregungen hier aufgreifen und selbst einbauen kannst.

Hast Du Dir nun schon den Debugger angesehen? Alle Fragen, die Du bisher gestellt hast, hätte der Debugger beantworten können.

Gruß Rainer

Option Explicit ' "" And InStr(Trim(Zeile), " ") 0 Then
 'Bedingung: Der übergebene String muss mindestens ein Zeichen enthalten.
 'Der String muss mindestens ein Leerzeichen enthalten.
 'Damit ist sicher, daß da mehr as ein Wort steht und die Funktion arbeiten kann. 
 ReDim Po(0) ' 0 '


Der Code noch einmal ohne Kommentare:



    
    
    Option Explicit
    
    Private Sub Command1\_Click()
     Label1.Caption = GetMiddle(Text1.Text)
    End Sub
    
    Private Function GetMiddle(ByVal Zeile As String) As String
     Dim Po() As Integer, n As Integer
     If Trim(Zeile) "" And InStr(Trim(Zeile), " ") 0 Then
     ReDim Po(0)
     While InStr(Po(n) + 1, Trim(Zeile), " ") 0
     n = n + 1
     ReDim Preserve Po(n)
     Po(n) = InStr(Po(n - 1) + 1, Trim(Zeile), " ")
     Wend
     GetMiddle = Mid(Trim(Zeile), Po((n + 1) \ 2), Po((n + 1) \ 2 + 1) - Po((n + 1) \ 2))
     Else
     GetMiddle = "Fehler"
     End If
    End Function

ne, sorry, krieg ich ned hin. Keinen blasen Dunst wo, wie,
was, wann ich hier wo ansetzten soll.
Die Wörter zählen geht, dass bekomm ich auch hin.
Also den Inhalt der Text1 ausgeben und die Wörter der text1
zählen geht. Nur wie ich dann eben hier nur das mittlere bzw
dritte Wort ausgeben…sorry, check ich nicht.

Hallo Rolf,

die Wörter zählen zu können ist doch schon ein Teil der Lösung.
Zeige mal bitte den Code der sie zählt.

Gruß
Reinhard

Hallo,

klar, muss ja n Teil sein. :smile:) Sonst weiss er ja ned welches das dritte Wort is und so nech :smile:)))

Ich hab jetzt mal mit nem Satz versucht der am Ende mit nem Punkt abgeschlossen wird -->

Dim Text As String, Punkt As String
Dim Position As Integer, Wörter As Integer, Zeichen As Integer

Text = Text1
Position = 1
Wörter = 1
Zeichen = 0
Text = Trim(Text)

Do Until Punkt = "."
Punkt = Mid(Text, Position, 1)
Position = Position + 1
If Punkt = " " Then
 Wörter = Wörter + 1
End If
Loop
If Wörter \> 3 Then
Label2 = Text
End If

Label1 = Wörter

Ich weiss, ned die Lösung bzw Ansatz den ihr euch vorgestellt habt, aber es klappt :smile:)

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ok, das hat was
Wirft zwar bei zwei Wörtern n Fehler auf , aber seis drum.
Ich druck mir das mal aus und werds studieren!

Denke sowas bingt mich n Schritt weiter.
Wenn ich mehr Zeit dafür hätte mich intesiv damit zu beschäftigen…, aber wenn man no zig andere „Baustelle“ (PHP und JAVA-Prgrammierungen zuliegen hat…

Danke euch dreien auf alle Fälle mal für eure Geduld und Hilfe.

Gruß Rolf

p. s. Ich denke den Thread kann man als erledigt ansehen, wenn ich die Text-Inhalt-Suche totzdem ned hinbekomm, meld ich mich wieder mit neuem Tread.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rolf,

Ok, das hat was
Wirft zwar bei zwei Wörtern n Fehler auf , aber seis drum.
Ich druck mir das mal aus und werds studieren!

Fehler? Der Code ist bei mir ohne Problem gelaufen.
Oder versthst Du etwas nicht? Dann erzähl was, es könnte wichtig sein.

p. s. Ich denke den Thread kann man als erledigt ansehen, wenn
ich die Text-Inhalt-Suche totzdem ned hinbekomm, meld ich mich
wieder mit neuem Tread.

OK, aber ich werde es trotzdem stehen lassen, eventuell findet ja noch Jemand etwas, das ihn interessiert. Ein paar fertige Codes gibt es ja inzwischen.

Wenn Du neue Fragen stellst, schreibe ich den Code nur, von dem Du weißt, daß es richtig ist.

Ach ja, Debugger. Inzwischen ausprobiert?

Gruß Rainer

Moin,

klar „versteh“ ich den Code so weit, nur - gib mal nur zwei Worte an…

Aber das is jetzt egal. :smile:))

Debugger schau ich mir morgen an, heute arbeiten.

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

klar „versteh“ ich den Code so weit, nur - gib mal nur zwei
Worte an…

ahhh, ja, hab’ ich getan. :smile:

Mir ist auch klar, warum das zu einem Fehler führt. Dir auch?

Das letzte Wort soll ‚ausgeschnitten‘ werden, dazu soll die Position der Leerzeichen vor und nach diesem Wort ermittelt werden. Nach dem Wort steht aber gar kein Leerzeichen, das würde im Array an der letzten Stelle stehen, die aber fehlt.

Um den Fehler zu beseitigen müsste am Code einiges geändert werden. Ich weiß auch was und hab’s mal getippt, geht. :smile:

Gruß Rainer