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

Typen unvertäglich ?

Typen unvertäglich ?
12.08.2002 14:20:24
Henri
Hallo,

ich habe ein Problem mit einer Variable ('var'). Es soll geprüft werden ob der Eintrag in TextBox7 schon vorhanden ist. Es erscheint aber immer die Fehlermeldung 'Typen unverträglich'. Ich habe schon mehrere Typen probiert (Boolean..) aber ich komm net klar.
Hier mal der Code:

Private Sub cmdEintragen_Click()

Dim fehler
Dim count, test
Dim var As Variant
Dim intRow As Integer

Sheets("Daten").Select

fehler = 0

If (TextBox2 = "") Then
MsgBox ("Kein Ort eingetragen.")
fehler = 1
End If

If (TextBox6 = "") Then
MsgBox ("Kein Vorname eingetragen.")
fehler = 1
End If

If (TextBox7 = "") Then
MsgBox ("Kein Name eingetragen.")
fehler = 1
End If

If (TextBox8 = "") Then
MsgBox ("Keine Straße eingetragen.")
fehler = 1
End If

If (TextBox9 = "") Then
MsgBox ("Keine Postleitzahl eingetragen.")
fehler = 1
End If

If (fehler = 1) Then

Else
var = Application.Match(CDbl(TextBox7.Text), Columns(1), 0)
If Not IsError(var) Then
MsgBox "Wert ist bereits vorhanden!"
End If
count = 1
test = 0
While (test = 0)

If ((Cells((count + 3), 1)) = "") Then
test = 1
End If
count = count + 1
Wend
count = count - 1
Cells(count + 3, 1) = count
Cells(count + 3, 2) = TextBox6
Cells(count + 3, 3) = TextBox7
Cells(count + 3, 4) = TextBox8
Cells(count + 3, 5) = TextBox9
Cells(count + 3, 6) = TextBox2
End If

Sheets("Eingabe Maske").Select
Unload Me

End Sub

Vielen Dank für die Hilfe

Henri

P.S. ich wollte eigentlich die Vor- UND Nachnamenbox auf schon vorhanden überprüfen. Vielleicht hat ja jemand auch dazu noch eine Idee.

many THX

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Typen unvertäglich ?
12.08.2002 15:32:38
GerdZ
Hallo Henri,

die Verwendung von CDbl in Verbindung mit TextBox7.Text ist hier das Problem. Du versucht einen Text in einen Double-Wert umzuwandeln. Aus dem Code weiter oben ist zu erkennen, daß in TextBox7 ein Name eingegeben werden soll.

Gruß
Gerd

Re: Typen unvertäglich ?
12.08.2002 15:55:46
Henri
Hallo Gerd,

pass auf. Ich habe schon versucht den Code so zu ändern:

Dim fehler
Dim count, test
Dim var As Boolean
Dim intRow As Integer

var = Application.Match(CBool(TextBox7.Text), Columns(1), 0)

Das hat aber leider auch nicht funktioniert. Ebenso wie dieser Versuch:

Dim fehler
Dim count, test
Dim var As Boolean
Dim intRow As Integer

var = Application.Match(CBool(TextBox7.Value), Columns(1), 0)

Was mache ich denn da falsch.

Ein unwissender

Henri



Anzeige
Re: Typen unvertäglich ?
12.08.2002 18:38:35
GerdZ
Hallo Henri,

schau Dir mal die Hilfe zur =VERGLEICH-Funktion an.
In VBA wird diese Funktion mit Application.WorksheetFunction.Match aufgerufen. Die Parameter sind die gleichen. Das Ergebnis der Funktion ist die Position des Gesuchten in der Suchmatrix.
Komplett lautet die Zeile:
Var = Application.WorksheetFunction.Match(TextBox7.Text, Columns(1), 0)
Wenn der in Textbox7 eigegebene Name in Spalte 1 enthalten ist, steht in var die Zeilennummer.

Gruß
Gerd

Re: Typen unvertäglich ?
13.08.2002 16:25:27
Henri
Hallo Gerd,

wenn ich im Excel die Definition (und damit auch die Hilfe) zu der Application.Match Funktion aufrufe, dann kommt die Meldung 'Kann nicht angezeigt werden, da versteckt'. Die Hilfe zur Vergleich-Funktion hab ich mir angeschaut und da stand drin, daß der Wert den ich vergleichen will als String definiert werden muß (Weil ich ja Text vergleiche). Also hab ich die Sache folgendermaßen geändert:

Dim fehler
Dim count, test
Dim var As String
Dim intRow As Integer

var = Application.Match(CStr(TextBox7.Text), Columns(1), 0)

Ging leider auch nicht.



Anzeige
Re: Typen unvertäglich ?
13.08.2002 18:32:26
GerdZ

Dim var As Long
var = Application.Worksheetfunction.Match(TextBox7.Text, Columns(1), 0)
TextBox7.Text muß nicht in Text konvertiert werden, da es bereits Text ist. Das Ergebnis der Match-Funktion ist eine Zeilennummer. Zwischen Application und Match muß noch Worksheetfunction eingefügt werden. Damit sollte es dann funktionieren.
Gruß
Gerd

Re: Typen unvertäglich ?
14.08.2002 11:12:46
Henri
Hallo Gerd,

vielen Dank erstmal für deine Mühe. Leider funktioniert es immer noch nicht *schäm*. Ich glaub ich bin da zu doof für. Hab alles eingetragen wie du es gesagt hast. Fehlermeldung:

Die Match Eigenschaft des WorksheetFunktion- Objektes kann nicht zugeordnet werden

Nun stehe ich wieder da.

Henri

Anzeige
Re: Typen unvertäglich ?
15.08.2002 14:12:42
GerdZ
Hallo Henri,

ich hatte leider nur mit Texten getestet, die auch vorhanden waren. Beim Testen mit nicht vorhandenen Werten ist mir dann der Unterschied zwischen Application.Match und Application.WorksheetFunction.Match aufgefallen.
Bei Application.Match muß var as Variant deklariert sein. Den Erfolg kann man dann mit IsError() abfragen.
Bei Application.WorksheetFunction.Match wird der Erfolg über das Err-Objekt ermittelt. Falls das Gesuchte nicht gefunden wird, wird der Fehlercode 1004 ausgelöst. Zur Erläuterung die beiden Varianten im Code:
1.Variante:

    Dim var As Variant
    var = Application.Match(TextBox7.Text, Columns(1), 0)
    If Not IsError(var) Then
        MsgBox "Wert ist bereits vorhanden!"
    End If

2. Variante:
    Dim var As Long
    On Error Resume Next
    var = Application.WorksheetFunction.Match(TextBox7.Text, Columns(1), 0)
    On Error Goto 0
    If var > 0 Then
        MsgBox "Wert ist bereits vorhanden!"
    End If
     Code eingefügt mit Syntaxhighlighter 1.13

Gruß
Gerd
Anzeige
Re: Typen unvertäglich ?
16.08.2002 20:17:05
Henri
Hallo Gerd,

ich bekomm nochmal eine Krise. Vielleicht sollte ich aufhören immer nur andere Codes nach meinen Vorstellungen umzustricken. Hab deine Variante 1 benutzt. Jetzt kommt kein Fehler mehr. Aber trotzdem werden auch doppelte Werte werden eingetragen. Ich hab jetzt mal am Ende die Variable var ausgegeben, um zu sehen was da überhaupt drin steht. Das Ergebnis ist #NV. Da müsste doch eingentlich der Inghalt von TextBox 7 drinstehen. Ich poste nochmal meinen VBA Code. Wenn du noch Lust hast, kannst du ja nochmal schauen.

Private Sub cmdEintragen_Click()

Dim fehler
Dim count, test
Dim var As Variant
Dim intRow As Integer

Sheets("Daten").Select
ActiveSheet.UsedRange.Select

fehler = 0
var = Application.Match(TextBox7.Text, Columns(1), 0)

If (TextBox2 = "") Then
MsgBox ("Kein Ort eingetragen.")
fehler = 1
End If

If (TextBox6 = "") Then
MsgBox ("Kein Vorname eingetragen.")
fehler = 1
End If

If (TextBox7 = "") Then
MsgBox ("Kein Name eingetragen.")
fehler = 1
End If

If (TextBox8 = "") Then
MsgBox ("Keine Straße eingetragen.")
fehler = 1
End If

If (TextBox9 = "") Then
MsgBox ("Keine Postleitzahl eingetragen.")
fehler = 1
End If

If (fehler = 1) Then

Else
If Not IsError(var) Then
MsgBox "Wert ist bereits vorhanden!"
Else
count = 1
test = 0
End If
While (test = 0)

If ((Cells((count + 3), 1)) = "") Then
test = 1
End If
count = count + 1
Wend
count = count - 1
Cells(count + 3, 1) = count
Cells(count + 3, 2) = TextBox6
Cells(count + 3, 3) = TextBox7
Cells(count + 3, 4) = TextBox8
Cells(count + 3, 5) = TextBox9
Cells(count + 3, 6) = TextBox2
Cells(count + 3, 7) = var
End If

Sheets("Eingabe Maske").Select
Unload Me

End Sub

Danke Henri

Anzeige
Re: Typen unvertäglich ?
17.08.2002 12:43:19
GerdZ
Hallo Henri,

durch var = Application.Match(TextBox7.Text, Columns(1), 0) steht in var die Zeilennummer des gefundenen Eintrags oder, wenn nichts gefunden wird, ein Fehlerwert, der in eine Zelle eingetragen als #NV dargestellt wird.
Das Eintragen bereits vorhandener Texte liegt an einem Fehler in der Programmabfolge (ein END IF steht in der falschen Zeile):

'falsche Pprogrammabfolge
If (fehler = 1) Then
    'wenn fehler, dann nichts eintragen
Else
    If Not IsError(var) Then
        MsgBox "Wert ist bereits vorhanden!"
    Else
        count = 1
        test = 0
    End If
    While (test = 0)
        If ((Cells((count + 3), 1)) = "") Then
            test = 1
        End If
        count = count + 1
    Wend
    count = count - 1
    Cells(count + 3, 1) = count
    Cells(count + 3, 2) = TextBox6
    Cells(count + 3, 3) = TextBox7
    Cells(count + 3, 4) = TextBox8
    Cells(count + 3, 5) = TextBox9
    Cells(count + 3, 6) = TextBox2
    Cells(count + 3, 7) = var
End If


'korrigierte Pprogrammabfolge
If (fehler = 1) Then
    'wenn fehler, dann nichts eintragen
Else
    If Not IsError(var) Then
        MsgBox "Wert ist bereits vorhanden!"
    Else
        count = 1
        test = 0
        While (test = 0)
            If ((Cells((count + 3), 1)) = "") Then
                test = 1
            End If
            count = count + 1
        Wend
        count = count - 1
        Cells(count + 3, 1) = count
        Cells(count + 3, 2) = TextBox6
        Cells(count + 3, 3) = TextBox7
        Cells(count + 3, 4) = TextBox8
        Cells(count + 3, 5) = TextBox9
        Cells(count + 3, 6) = TextBox2
        Cells(count + 3, 7) = var
    End If
End If

     Code eingefügt mit Syntaxhighlighter 1.13

Mit Verschiebung dieser END IF-Zeile sollte es jetzt ohne Probleme funktionieren.

Gruß
Gerd

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige