VBA Lösung gesucht

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm TextBox MsgBox
Bild

Betrifft: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 09:45:10
Hallo!
Ich habe in Datensätzen immer an der 21 bis 22 Stelle zwei Zahlen stehen.
Entweder 01, 02 oder 03
Ich möchte nun mittels VBA z.B. die Anzahl aller 03 in eine TextBox einer Userform einlesen lassen. In diesem Fall 00003 mit Vornullen.

40237449401042400009014020000010
40237449401042400010023043260391
4023744940104240001103D000000001
4023744940104240001203L00000712
4023744940104240001303L00002912
Gäbe es hier bitte eine Lösung dafür?

Danke

Josef

Bild

Betrifft: AW: VBA Lösung gesucht
von: Hajo_Zi
Geschrieben am: 04.04.2005 10:04:30
Hallo Josef,
Option Explicit

Sub Zaehlen()
    Dim StWert()
    Dim InI As Integer
    Dim InWert As Integer
    StWert = Array("40237449401042400009014020000010", "40237449401042400010023043260391", _
        "4023744940104240001103D000000001", "4023744940104240001203L00000712", _
        "4023744940104240001303L00002912")
    For InI = 0 To UBound(StWert)
        InWert = InWert + CInt(CStr(Mid(StWert(InI), 21, 2)) = "03") * -1
    Next
    MsgBox InWert
End Sub


Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 10:21:09
Hallo Hajo!
Wie immer Danke für Deine schnelle Antwort und Deine Lösung.
Dazu hätte ich noch eine Frage:
Zu dem Array ("40237449401042400009014020000010", "40237449401042400010023043260391", _
"4023744940104240001103D000000001", "4023744940104240001203L00000712", _
"4023744940104240001303L00002912")

Diese Zahlen waren nur ein Beispielmuster.
Diese Zahlengruppe kann jedesmal eine andere sein. Das einzige was immer gleich wäre,die Stelle21 bis 22 wäre 03.
Josef
Bild

Betrifft: AW: VBA Lösung gesucht
von: Hajo_Zi
Geschrieben am: 04.04.2005 10:29:10
Hallo Josef,
irgendwie hast Du Deine Frage vergessen?
Ich habe es jetzt mit Array gemacht das nußt Du natürlich Deinen Bedingungen (Zellen, Textboxen, .... ) anpassen.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 10:50:35
Hallo Hajo!
Tut mir leid. Mein Fehler.
Diese Zahlen waren nur ein Beispielmuster.
Diese Zahlengruppe kann jedesmal eine andere sein. Das einzige was immer gleich wäre,die Stelle 21 bis 22 wäre 03.
Das Ergebnis sollte in einer Userform in einer Textbox eingetragen werden.Also hätte ich viermal 03, dann müßte das Ergebnis 00004 heißen.

Josef
Bild

Betrifft: AW: VBA Lösung gesucht
von: Hajo_Zi
Geschrieben am: 04.04.2005 10:55:11
Hallo Josef,
das ist ein schöner Beitrag, aber keine neue Information. Ändere die Zeile
MsgBox Format(InWert, "00000")
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 10:55:14
Hallo nochmals!
Wäre das ungefähr so richtig?
StWert = Range("a65536").End(xlUp).Offset(1, 0).Value = Textbox1.Text

Josef
Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 11:02:05
Hallo!
Habe jetzt das Makro ausgeführt. Bekomme die Fehlermeldung :
Keine Zuweisung an Datenfeld möglich und und STWert = wird markiert.
Das Makro kopierte ich in ein normales Modul und wechselte die Zeile MSGBox... aus.

Josef
Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 11:10:39
Das Makro funkioniert jetzt.
Ich änderte Dim StWert() auf
Dim StWert As Variant
und das Ergebnis war 03

Josef
Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 11:24:09
Hallo!
Ich versuchte dieses Makro und erhielt folgende Fehlermeldungmeldung:

Index außerhalb des gültigen Bereiches und die Zeile
InWert = InWert + CInt(CStr(Mid(StWert(InI), 21, 2)) = "03") * -1
wird markiert.

Sub Zaehlen()
    Dim StWert As Variant
    Dim InI As Integer
    Dim InWert As Integer
    StWert = Range("A1:A100") 
    For InI = 0 To UBound(StWert)
        InWert = InWert + CInt(CStr(Mid(StWert(InI), 21, 2)) = "03") * -1
    Next
    MsgBox Format(InWert, "00000")
End Sub


Josef
Bild

Betrifft: AW: VBA Lösung gesucht
von: Hajo_Zi
Geschrieben am: 04.04.2005 11:26:33
Hallo Josef,
Du hast das Array nicht richtig definiert.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 11:31:22
Hallo Hajo!
Jetzt habe ich es so probiert:
StWert = Array("A1:A1000")

Das Ergebnis ware aber jetzt nur 00000.
Also mache ich praktisch noch immer beim Array etwas falsch nehme ich mal an,

Josef
Bild

Betrifft: AW: VBA Lösung gesucht
von: Ceyser Soze
Geschrieben am: 04.04.2005 11:39:08
Hi Josef,
probier mal die Mappe:
https://www.herber.de/bbs/user/20663.xls
Gruß
CS
Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 11:59:18
Hallo Ceyser!
Danke für Deine Beispielmappe. Das ist die Lösung.
Herzlichen Dank noch
Josef
Bild

Betrifft: oder so:
von: IngoG
Geschrieben am: 04.04.2005 12:20:23
Hallo Josef,
so gehts auch
Gruß Ingo

Sub aaaa()
MsgBox Format(WorksheetFunction.CountIf(Range("a1:a1000"), "????????????????????03*"), "00000")
End Sub

Bild

Betrifft: AW: oder so:
von: Josef
Geschrieben am: 05.04.2005 06:18:16
Hallo Ingo!
Danke für Deine Antwort und Deinen Lösungsvorschlag.

Josef
Bild

Betrifft: Danke für die Rückmeldung oT
von: IngoG
Geschrieben am: 05.04.2005 08:54:39
.
Bild

Betrifft: AW: VBA Lösung gesucht
von: Hajo_Zi
Geschrieben am: 04.04.2005 11:39:46
Hallo Josef,
es ist schon eine Leistung das Du 8 Beiträge brauchst um mitzuteilen das die Werte in der Tabelle stehen!
Option Explicit

Sub Zaehlen()
'    Dim StWert()
    Dim InI As Integer
    Dim InWert As Integer
'    StWert = Array("40237449401042400009014020000010", "40237449401042400010023043260391", _
'        "4023744940104240001103D000000001", "4023744940104240001203L00000712", _
'        "4023744940104240001303L00002912")
    For InI = 1 To 1000
        InWert = InWert + CInt(CStr(Mid(Cells(InI, 1), 21, 2)) = "03") * -1
    Next
    MsgBox Format(InWert, "00000")
End Sub

Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Bild

Betrifft: AW: VBA Lösung gesucht
von: Josef
Geschrieben am: 04.04.2005 11:56:49
Hallo Hajo!
Ich bin halt leider immer noch ein Laie auf diesem Gebiet.Tut mir leid. Werde mich bessern, bin ja noch lernfähig.

Auf jeden Fall Danke für Deine Mühe.

Schönen Tag noch

Josef
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Benachrichtigung beim Aufruf des VBE"