Excel vba programmieren

Liebe/-r Experte/-in,
ich habe ein Problem.
Und zwar möchte ich ind meinem Programm mit einer For schleife werte aus 2 Comboboxen mit Werten aus einem Tabellenblatt vergleichen, wenn diese übereinstimmen, soll die zeilen beziehungsweise spaltenzahl angezeigt werden. Ich weiß leider grade nicht wirklich wie ich das besser beschreiben soll, ich glaube man kann das im quelltext besser erkennen.
Für den ersten fall funktioniert das auch, im 2ten passiert nichts.

http://www.fileuploadx.de/680007

Vilen dank für die hilfe

For i = 1 To 20
If Mg = Worksheets(„Tabelle1“).Cells(3, i).Value Then
TextBox1.Value = i
Exit For
End If
Next

For j = 1 To 20
If Sk = Worksheets(„Tabelle1“).Cells(j, 2).Value Then
TextBox2.Value = j
Exit For
End If
Next

sig0 = Worksheets(„Tabelle1“).Cells(j, i).Value

Besser deklarieren und typgerecht vergleichen
Hi Willi,
dass Sk nicht gefunden wird, ist kein Wunder.
In Tabelle1!B5:B14 stehen Zahlen,
Steinfestigkeitsklasse.Value ist ein Text,
Sk ist als Variant deklariert,
enthält dann ein Variant, Untertyp „Text“.
Das wird dann mit den Zahlen der Tabelle verglichen.

Du musst dich entscheiden:
Sollen die Steinfestigkeitsklasse Texte oder Zahlen sein?
Hier mal beide Möglichkeiten:

Sk = Steinfestigkeitsklasse.Value
’ Suche einer Zahl in Zahlen, ohne Schleife
varTmp = Application.Match(CLng(Sk), Worksheets(„Tabelle1“).Range(„B1:B14“), 0)
If IsNumeric(varTmp) Then TextBox2.Value = varTmp

’ Suche eines Textes in Texten, mit Schleife
For j = 5 To 14
If Sk = CStr(Worksheets(„Tabelle1“).Cells(j, 2).Value) Then
TextBox2.Value = j
Exit For
End If
Next j

Generell möchte ich dir empfehlen, Variablen möglichst NICHT als Variant zu deklarieren
(dann kann man’s auch fast gleich lassen),
sondern den Typ genauer zu bestimmen.
(In meinem Beispiel kommt eine der seltenen Ausnahmen vor:
varTmp muss als Variant-Variable deklariert werden,
weil man vorher nicht weiß, ob Application.Match (VERGLEICH) eine Zahl oder einen Fehlerwert zurückgibt.)

Hilft das weiter?
Noch ein Frohes Neues wünscht Erich aus Kamp-Lintfort

Hi,

das mit der Variant deklaration, ist immoment auch nur, weil ich nicht wusste was ich noch machen könnte und ich mir sowas in der richtung das irgendwas in nem anderem format gespeichert ist etc. gedacht habe.
Jedenfalls funktioniert das ganze jetzt wunderbar und ich danke recht herzlich.

Willi

Lieber Willi,
sende mir doch als Anlage bitte die Tabelle mit den Comboboxen zu, damit ich sehen kann, was überhaupt passiert.
vielen Dank
Bodo

Liebe/-r Experte/-in,
ich habe ein Problem.
Und zwar möchte ich ind meinem Programm mit einer For schleife
werte aus 2 Comboboxen mit Werten aus einem Tabellenblatt
vergleichen, wenn diese übereinstimmen, soll die zeilen
beziehungsweise spaltenzahl angezeigt werden. Ich weiß leider
grade nicht wirklich wie ich das besser beschreiben soll, ich
glaube man kann das im quelltext besser erkennen.
Für den ersten fall funktioniert das auch, im 2ten passiert
nichts.

http://www.fileuploadx.de/680007

Vilen dank für die hilfe

For i = 1 To 20
If Mg = Worksheets(„Tabelle1“).Cells(3, i).Value Then
TextBox1.Value = i
Exit For
End If
Next

sk=cint(sk)
For j = 1 To 20
If Sk = Worksheets(„Tabelle1“).Cells(j, 2).Value Then
TextBox2.Value = j
Exit For
End If
Next

sig0 = Worksheets(„Tabelle1“).Cells(j, i).Value

Habe nur die Daentypen korrigiert
Sk = CInt(Sk)
Bei mir hat die Excelabelle deshalb nie einen gleichen Sk wert gefunden, weil die Datentypen nicht übereinstimmten(Bitte frage nicht warum das erste Sk ein String ist - wenn du mit f8 einzeln durchgehst siehts du die Anführungszeichen beim linken Sk!

Grüße aus Nürnberg

Jürgen

willi,
deine problembeschreibung ist etwas duerftig, ich weiss nicht was ist wenn du sagst der erste geht, der 2te nicht. vielleicht koenntest du einfach die anfangszeile im VBA-editor vor dem aufruf markieren, dann bist du im debug-modus und kannst die werte laufend pruefen. so kommt man meisten zur problemloesung…

mfg
pete