Problem mit Exel und VB?

Entschuldige bitte, das ich gedrängelt hatte.

Ich habe jetzt das zusammen:

Code:
Public Sub Load_Excel(test)
Dim myXLS As Object
Set myXLS = GetObject("c:\test.xls")

wf = test
For Each wert In myXLS.Sheets(1).Range("A1") 
    If InStr(wert, wf) Then
    Label1.Caption = (myXLS.Sheets(1).Cells(wert.Row, 2).Value)
    Exit For
    End If
Next wert

End Sub

das ist in einem modul drinne.

jetzt habe ich in einer form:

Code:
Private Subcommand1_click()
Load_excel(Text1)

ich habe jetzt einiges getestet und habe herausgefunden, dass "wert" immer den ersten wert aus der Spalte "A1" zurückgibt.

zweitens, wenn ich hingehe und beide vergleiche kommt immer "false".

Ich habe auch schon msgbox(wert & " = " & wf) als versuch gemacht dort kahmm dann: 123 = 123

wenn ich dann nur msgbox durch if ersetzt habe kahm trozdem "false".

Ich hoffe du kannst mir erklären warum das so ist und was für einen Fehler ich mache.

Ich habe versucht durch F1 die hilfe aufzurufen dann kommt bei mir immer, dass die Datei nicht gefunden wurde.

Danke dir
 
Zunächst mal ist Range(A1) keine Spalte sondern eine Zelle, die sich zusammensetzt aus der Spalte A und der Zeile 1.

Im übrigen hat thekorn es ganz gut beschrieben. Du hast im Schleifenkopf keinen Bereich angegeben sondern nur die Zelle A1. So ist es nicht verwunderlich, dass das Programm Dir dann auch immer nur den Wert aus dieser Zelle ausspuckt. Also, einfach den Bereich angeben. z.B. Range(A1:C6)
 
Ups.

Entschuldige bitte.
Ich habe mir den beitrag nochmals durchgelesen.

da bin ich wohl eine rheie zu tief gefallen.

Ich habe "uberlesen" dass ich den bereich in Excel festlegen muss.

Jetzt gehts.

Und ja stimmt thekorn hat eine super Anleitung geschrieben.
Diese nützt allerdings nur was, wenn ich richtig lesen würde.

Ich danke dir für deine Mühe die du dir gemacht hast.

MfG Stephan
 
habe jetzt weitergemacht und aufgefallen, wenn ich eine falsche eingabe mache, dann stürzt das programm ab also es hängt sich auf und man kanns nur noch mit strg + alt + entf beenden.

kann mir einer erklären wie ich das machen muss, damit dies nicht passiert?

danke.
 
Was für eine FALSCHE eingabe?

An welcher stelle "hängt" er sich auf, bzw. wenn du was für eine Eingabe machst?

Damit du die Syntaxhilfe von Excel benutzen kannst musst du die Excel Bibliothek einbinden!

gruß
thekorn
 
Hallo,

Also ich habe ein textfeld gemacht, den wert den man dort eingibt, wird dann in Spalte A gesucht...

das geht auch soweit nur wenn ich jetzt einen wert eingebe der in Spalte A nicht existiert, dann hängt sich das programm auf, ich habs immer wiederholt und auch schon vieles versucht aber ich schaffe es nicht.

Danke für deine hilfe
 
Für mich wäre es sehr hilfreich, wenn ich die Abbruchbedingung der Schleife mal sehen könnte. Hört sich arg nach einer Endlos - Schleife an.
 
hallo,

dass ist die schleift:

Code:
    If (wf = "") Then
    Else
        For Each wert In myXLS.Sheets(1).Range("TABELLEA")
            If (wert = wf) Then
                Start.Text1 = (myXLS.Sheets(1).Cells(wert.Row, 2).Value)
                Start.Text3 = (myXLS.Sheets(1).Cells(wert.Row, 3).Value)
                Start.Text4 = (myXLS.Sheets(1).Cells(wert.Row, 4).Value)
                Start.Text2 = (myXLS.Sheets(1).Cells(wert.Row, 5).Value)
                Exit For
            End If
       
        Next wert
    End If

sorry, ich habe nicht dran gedacht den code zu posten.

also exit for habe ich drinne...

Danke
 
Analyse...

also zunächst ist es wichtig, dass der Bereich "TABELLEA" nicht zu groß gewähl wird. Wenn du die gesamte Spalte A, also den Bereich "A:A", als diesen Bereich definierst, geht deine Prozedur alle 65000 Zellen in Spalte A durch, und sucht nach dem Wert "wf". Er hängt sich dabei normalerweise nicht auf, es dauert einfach nur verdammt lange.
Deshalb ist es wichtig, dass du entweder den Bereich sinnvoll anpasst oder dass du eine zusätzlich Abbruchbedingung schaffst, die prüft, ob das Ende deiner Tabelle erreicht ist, bzw. den Bereich dynamisch anpasst.

Ein Hinweis noch:
Deine ursprüngliche Idee war nach Bestandteilen von Zellenwerten zu suchen, mit
Code:
If wert = wf then
werden aber nur vollständige Übereinstimmungen berücksichtigt.


gruß
thekorn
 
Hallo,

Danke für deine Antworten!

Ich habe mich vielleicht etwas falsch ausgedrückt, ich wollte den inhalt der Spalten exakt vergleichen.

Jetzt gehts auf jeden fall..

nur wenn ich jetzt in spalte b statt eine Zahl ein z.B. Wort zurückbekomme kommt:

"Typen unverträglich"

wie kann ich den fehler abfangen?

Mein Versuch war:

Code:
on error goto type_wrong

type_wrong:
  msgbox "ERROR"

aber das haut nicht hin.

Code:
                Start.Text1 = (myXLS.Sheets(1).Cells(wert.Row, 2).Value)
                Start.Text3 = (myXLS.Sheets(1).Cells(wert.Row, 3).Value)
                Start.Text4 = (myXLS.Sheets(1).Cells(wert.Row, 4).Value)
                Start.Text2 = (myXLS.Sheets(1).Cells(wert.Row, 5).Value)

mir würde reichen, wenn am anfang ein "Vergleich" kommt, also wenn es keine zahl ist, dann soll was passieren, wenn eine zahl dann soll der obige code passieren.

dazu habe ich gedacht:

Code:
if () then
  msgbox "ERROR"
else
DER OBIGE CODE
end if

das problem dabei ist, das sich nicht weiß wie ich die Abfrage in if machen soll...

WÄre gut wenn mir dabei noch einer helfen könnte.

Danke dir!
 

Neue Beiträge

Zurück