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

Index

Index hochzählen
20.02.2003 14:15:51
Matthias H.
Hallo,

Ziel ist es folgende Funktionalität mit einer Schleife zu realisieren:

Dim u1, u11, u12, u13 As String

Private Sub ComboBox1_Change()

Case u1
If u11 <> "" Then
ComboBox2.AddItem u11
End If
If u12 <> "" Then
ComboBox2.AddItem u12
End If
If u13 <> "" Then
ComboBox2.AddItem u13
End If

End Select
Next
End Sub

Die Variablen werden unter
Private Sub UserForm_Initialize()
Initialisiert:
u1 = "Software"
u11 = "Audio"
u12 = "Video"
u13 = "Bild"
...

Mein Schleifen-Ansatz sieht so aus:

Dim u1, u11, u12, u13 As String

Private Sub ComboBox1_Change()
Dim i
For i = 1 To 3
Select Case ComboBox1.Text

Case u1
If u1 & i <> "" Then
ComboBox2.AddItem u1 & i
End If

End Select
Next
End Sub

Ziel ist es den Index von u hoch zu zählen. Leider wird aber bei u1 & i im ersten Durchlauf nicht u11=“Audio“ verarbeitet, sondern der Eintrag von u1=“Software“ jeweils mit i erweitert, es steht also

Software1
Software2
Software3

in der ComboBox2.
Wie kann ich den Index der Variablen u hochzählen?

Gruß Matthias

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Index hochzählen
20.02.2003 14:18:22
Steffen D

Hi,

warum bleibst du nicht im alten Thread!!!????

hast du meinen Tip gelesen?

es ist besser wenn du deine Texte in einem Array abspeicherst...
dann kannst du direkt mit einer variable da drauf zugreifen:

i=11
U(i)="test"

Gruß
Steffen D

Re: Index hochzählen
20.02.2003 14:30:29
Matthias H.

Hallo Steffen,

tut mir leid, ich will nicht das Forum zumüllen, hab Deinen Tip erst jetzt bemerkt.

Die LBound und UBound Funktionen kannte ich noch nicht. Laut Hilfe geben sie den kleinsten und größten Index zurück.
Es ist deshalb so kompliziert, weil ich ja mit jeder Auswahl in der ComboBox den Inhalt der nächsten bestimme. Dadurch ergeben sich ein-, zwei- und dreistellige Indizes.
Mit

For i=LBound(U) to ubound(U)
If u(i) <> "" Then
ComboBox.AddItem u(i)
End If
Next i
End Sub

werden ja alle Uxxx denen ein Wert zugeordnet wurde in die ComboBox übernommen, oder? Wie kann ich die zu zählende Stelle des Index festlegen?

Deinen Tip mit u(i) habe ich mal probiert:

Private Sub ComboBox1_Change()
Dim i
For i = 11 To 13
Select Case ComboBox1.Text

Case u1
If u(i) <> "" Then
ComboBox2.AddItem u(i)
End If

da gibts aber einen "Fehler beim Kompilieren Sub oder Function nicht definiert". Wenn ich u als String definiere gibt es einen "Laufzeitfehler13 Typen unverträglich"...

Gruß Matthias

Anzeige
Re: Index hochzählen
20.02.2003 14:42:40
Steffen D

Hi, du musst U als Array im Stringformat deklarieren:
Dim U(555) as String '555 ist die anzahl der Elementen!

Private Sub ComboBox1_Change()
Dim i
For i = 11 To 13
Select Case ComboBox1.Text
Case u(1)
If u(i) <> "" Then
ComboBox2.AddItem u(i)
End If


Zähler verknüpfen
20.02.2003 14:57:00
Matthias H.

Hallo Steffen,

genau das habe ich eingegeben. Jetzt klappts auch. Vielen Dank, das erleichter vieles!
Mein Versuch einen zweiten Zähle einzubauen, der die cases zählt hat aber noch nicht funktioniert:

Private Sub ComboBox1_Change()
ComboBox2.clear
ComboBox3.clear

Dim h
For h = 1 To 3
Dim i
For i = 1 To 3
Select Case ComboBox1.Text
Case u(h)
If u(h, i) <> "" Then
ComboBox2.AddItem u(h, i)
End If


End Select
Next
Next
End Sub

wie kann ich die Laufvariablen verknüppfen? Also z.B.:
die äußere Schleife ist bei 2 und die innere bei 2. Dann müßte case (u2) prüfen ob unter der Variablen u(23) ein Wert abgelegt ist.

Gruß
Matthias


Anzeige
habs gefunden!
20.02.2003 14:58:40
Matthias H.

das geht mit

u(h & i)

Vielen Dank nochmal!

Matthias

Re: Zähler verknüpfen
20.02.2003 15:03:33
Steffen D

Hi,

wenn du das ganze in einer schleife machst dann brauchst du ja kein Select CAse mehr!
Probier mal dieses Makro aus:

Private Sub ComboBox1_Change()
Dim h As Integer, i As Integer

ComboBox2.Clear
ComboBox3.Clear

For h = 1 To 3
If ComboBox1.Text = u(h) Then
For i = 1 To 3
If u(h & i) <> "" Then ComboBox2.AddItem u(h & i)
Next i
End If
Next h
End Sub

Gruß
Steffen D

Re: Zähler verknüpfen
20.02.2003 15:44:06
Ist ja noch besser!

Hallo Steffen,

der code wird immer kürzer, echt toll!

Gruß
Matthias

Anzeige
doch noch was
20.02.2003 16:06:25
Matthias H.

Hallo Steffen,

ich habe jetzt den Code auf "reine Zählerfunktion" umgestellt.

Bei Betätigen des CommandButton1 (ok) wird das gewählte Blatt angesprungen, und der Titel des Blattes in die Zelle A2 geschrieben. Trotzdem gibt es eine Fehlermeldung in der Zeile

If ComboBox3.Text = u(m & n & o) Then

mit dem Text "Laufzeitfehler 9 Index außerhalb des gültigen Bereichs"

Hier nochmal die Sub:


Private Sub CommandButton1_Click() ' in Combobox gewähltes Ziel anspringen
Dim m As Integer, n As Integer, o As Integer

If ComboBox1.Text = "" Then
MsgBox "Bitte eine Auswahl treffen"

Else

Cells(3, 5) = ComboBox1.Text 'Zielpfad in Zellen E3,E5,E7 ausgeben
Cells(5, 5) = ComboBox2.Text
Cells(7, 5) = ComboBox3.Text

If ComboBox3.Text <> "" Then
For m = 1 To 5
For n = 1 To 5
For o = 1 To 5
If ComboBox3.Text = u(m & n & o) Then

Sheets("U" & m & n & o).Cells((r), (c)) = u(m & n & o)
Unload Me
Sheets("U" & m & n & o).Select
End If
Next
Next
Next

Dim p As Integer, q As Integer
ElseIf ComboBox2.Text <> "" Then 'Wenn in ComboBox 1-2 gewählt wurde

For p = 1 To 5
For q = 1 To 5
If ComboBox2.Text = u(p & q) Then
Sheets("U" & p & q).Cells((r), (c)) = u(p & q)
Unload Me
Sheets("U" & p & q).Select

End If
Next
Next
End If
End If
End Sub

Kannst Du einen Fehler erkennen? Ich sehe es langsam nicht mehr.
Gruß
Matthias


Anzeige
doch noch was
20.02.2003 16:06:32
Matthias H.

Hallo Steffen,

ich habe jetzt den Code auf "reine Zählerfunktion" umgestellt.

Bei Betätigen des CommandButton1 (ok) wird das gewählte Blatt angesprungen, und der Titel des Blattes in die Zelle A2 geschrieben. Trotzdem gibt es eine Fehlermeldung in der Zeile

If ComboBox3.Text = u(m & n & o) Then

mit dem Text "Laufzeitfehler 9 Index außerhalb des gültigen Bereichs"

Hier nochmal die Sub:


Private Sub CommandButton1_Click() ' in Combobox gewähltes Ziel anspringen
Dim m As Integer, n As Integer, o As Integer

If ComboBox1.Text = "" Then
MsgBox "Bitte eine Auswahl treffen"

Else

Cells(3, 5) = ComboBox1.Text 'Zielpfad in Zellen E3,E5,E7 ausgeben
Cells(5, 5) = ComboBox2.Text
Cells(7, 5) = ComboBox3.Text

If ComboBox3.Text <> "" Then
For m = 1 To 5
For n = 1 To 5
For o = 1 To 5
If ComboBox3.Text = u(m & n & o) Then

Sheets("U" & m & n & o).Cells((r), (c)) = u(m & n & o)
Unload Me
Sheets("U" & m & n & o).Select
End If
Next
Next
Next

Dim p As Integer, q As Integer
ElseIf ComboBox2.Text <> "" Then 'Wenn in ComboBox 1-2 gewählt wurde

For p = 1 To 5
For q = 1 To 5
If ComboBox2.Text = u(p & q) Then
Sheets("U" & p & q).Cells((r), (c)) = u(p & q)
Unload Me
Sheets("U" & p & q).Select

End If
Next
Next
End If
End If
End Sub

Kannst Du einen Fehler erkennen? Ich sehe es langsam nicht mehr.
Gruß
Matthias


Anzeige
Re: doch noch was
20.02.2003 17:58:15
Steffen D

Hi Matthias,

laut der Fehlermeldung hast du wahrscheinlich den Array falsch dimensioniert! erhöhe einfach die anzahl der elemente auf z.b. 600: (zur zeit hast du wahrscheinlich auf 555)

Dim U(600) As String

wenn dass nicht der fehler war, dann kannst du ja im debug-modus (mit F9 haltepunkte reinmachen und dann schrittweise (mit F8) durchgehen und die variablen m,n,o anschauen, wann der fehler kommt)

du versuchst halt auf einen element vom Array zuzugreifen welchen gar nicht gibt... deswegen ausser Bereich

Gruß
Steffen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige