Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1108to1112
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
Inhaltsverzeichnis

Problem mit Application.Match :(

Problem mit Application.Match :(
Jaffi
Hallo Forum,
mal wieder ein für mich unlösbares Problem.
Ich möchte eine 15 stellige Zahl per Userform in einer Spalte suchen. Wenn er sie nicht gefunden hat soll er sie eintragen, findet er sie soll er mir das löschen anbieten. In anderen Projekten hab ich das schon zum laufen bekommen. Diesmal hänge ich!!!
Der Code:

Option Explicit
Public lFreieman, manZeile As Long
Public wksi, wksn, wkss, wksc, wkst As Worksheets
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton2_Click()
Set wksi = Worksheets("sheet")
If Not IsNumeric(TextBox1.Value) Then
MsgBox "keene Nummer"
Label2.Caption = "ungültig !"
ElseIf Len(TextBox1.Value)  15 Then
Label2.Caption = "ungültig !"
MsgBox "zu kurz oder zu lang!"
ElseIf Not IsError(Application.Match(CLng(TextBox1.Value), wksi.Range("A:A"), 0)) Then  // hier  _
_
bekomme ich einen Laufzeitfehler 6 - Überlauf
manZeile = (Application.Match(CLng(TextBox1.Value), wksi.Range("A:A"), 0))
MsgBox manZeile
Label2.Caption = "gefunden ! Löschen?"
CommandButton2.Visible = False
CommandButton3.Visible = True
Else
With wksi
lFreieman = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lFreieman, 1).Value = TextBox1.Value
Label2.Caption = "Die Daten wurden übernommen !"
End With
End If
End Sub
Private Sub CommandButton3_Click()
wksiphone.Rows(manZeile).Delete Shift:=xlUp
Label2.Caption = "wurde gelöscht !"
TextBox1.Value = ""
CommandButton2.Visible = True
CommandButton3.Visible = False
End Sub
Private Sub TextBox1_Change()
Label2.Caption = ""
CommandButton2.Visible = True
CommandButton3.Visible = False
End Sub

Irgendwie stehe ich auf der Leitung und komme nicht weiter. Tabellenblatt hat nur eine Spalte und soll wie gesagt ich möchte nur eine 15 stellige Ziffer erfassen!! :(
Weis jemand warum ich den o.g. Laufzeitfehler bekomme?
Tausend Dank für jeden Tip!
Grüsse
J.
AW: Problem mit Application.Match :(
15.10.2009 15:33:29
Peter
Hallo Jaffi,
CLng kann nun einmal keine 15-stellige Zahl verkraften.
Gruß Peter
AW: Problem mit Application.Match :(
15.10.2009 15:51:53
Jaffi
Hm, ok..danke für den Hinweis!!
Irgendjemand eine Idee? Oder besser die Find-Methode nutzen?
Tausend Dank!
AW: Problem mit Application.Match :(
15.10.2009 17:22:54
Tino
Hallo,
deklariere manZeile als Variant und prüfe mit IsNumeric ob etwas gefunden wurde.
Wurde etwas gefunden hat manZeile eine Zahl (Zeile wo gefunden)
Wurde nichts gefunden, hat manZeile wen Fehlerwert Fehler 2042 und ist somit keine Zahl.
Gruß Tino
AW: Problem mit Application.Match :(
15.10.2009 21:42:00
Thomas
Nachdem Du gecheckt hast, daß der Text ne Zahl is (isnumeric), warum vergleichst Du dann nicht mittels strcomp oder instr?
Gruß
Thomas
... und mail mal an jaffi@web.de, mich würd interessieren, wie Du zu meinem Spitznamen kommst... ;)
AW: Problem mit Application.Match :(
16.10.2009 14:17:57
Jaffi
Hm. Vielen Dank für eure Hinweise!
Aber irgendwie bekomme ich das nicht hin. Bin und bleibe halt immer Anfängerin :D
Kann mir jemand sagen wie der Code aussehen müsste.
Mit Application.match wars so schön einfach und verständlich für mich:
prüfe ob Zahl
prüfe ob 15 stellig
prüfe ob Zahl schon vorhanden - ja? - löschen anbieten/ nein? - in letzte freie Zeile eintragen
kurz und knapp...
*grummel* kann mir jemand helfen? :(
Jaffi war ud ist ein reiner Fantasie-Name, Thomas... Zufälle gibts ;)
Tausend Dank für Deine/Eure Hilfe
Grüsse
J
Anzeige
AW: Problem mit Application.Match :(
16.10.2009 15:59:34
dan
Hallo,
hier ein Vorschlag, kommst Du damit klar? Gruss dan, cz.
Option Explicit
Public lFreieman, manZeile As Long
Public wksi, wksn, wkss, wksc, wkst As Worksheets
Private Sub CommandButton2_Click()
Set wksi = Worksheets("sheet")
'prüfe ob Zahl
If Not IsNumeric(TextBox1.Value) Then
MsgBox "keene Nummer"
Label2.Caption = "ungültig !"
Exit Sub
End If
'prüfe ob 15 stellig
If Len(TextBox1.Value)  15 Then
Label2.Caption = "ungültig !"
MsgBox "zu kurz oder zu lang!"
Exit Sub
End If
'prüfe ob Zahl schon vorhanden
Dim lookupRng As Range
Dim testedNumber As Variant
Dim matchResult As Variant
testedNumber = CDec(TextBox1.Value)
Set lookupRng = wksi.Range("A:A")
matchResult = Application.Match(testedNumber, lookupRng, 0)
' Zahl nicht vorhanden, in letzte freie Zeile eintragen
If IsError(matchResult) Then
With wksi
lFreieman = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lFreieman, 1).Value = TextBox1.Value
Label2.Caption = "Die Daten wurden übernommen !"
End With
Exit Sub
End If
' Zahl vorhanden, löschen anbieten
Dim result As VbMsgBoxResult
result = MsgBox("Zahl schon vorhanden, Zeile: " & matchResult & ". Moechten Sie es loeschen? _
", vbYesNo, "Zahl schon vorhanden")
If (result = vbYes) Then
lookupRng.Rows(matchResult).Cells(1).Delete
Label2.Caption = "Gefunden, gelöscht."
End If
End Sub

Anzeige
AW: Problem mit Application.Match :(
16.10.2009 16:19:11
Jaffi
leider nein :(
klappt nicht. Ich möchte das Löschen auch nicht mit einer MsgBox anbieten sondern die Userform soll sich entsprechend "verändern". Ich glaube ich bekomme bei deinem Code auch ein Problem mit meiner Mac-Version.
Sorry, ungeduldig wie ich war habe ich meine Anfrage oben nochmals gestellt. Dachte ich bin schon soweit unten das mir eh keiner mehr antwortet ;)
*grummel* als irgendwie bin ich zum scheitern verurteilt :(
AW: Problem mit Application.Match :(
16.10.2009 16:32:28
dan
Aha, na dann etwa so:
Option Explicit
Public lFreieman, manZeile As Long
Public wksi, wksn, wkss, wksc, wkst As Worksheets
Private matchResult As Variant
Private Sub CommandButton2_Click()
Set wksi = Worksheets("sheet")
'prüfe ob Zahl
If Not IsNumeric(TextBox1.Value) Then
MsgBox "keene Nummer"
Label2.Caption = "ungültig !"
Exit Sub
End If
'prüfe ob 15 stellig
If Len(TextBox1.Value)  15 Then
Label2.Caption = "ungültig !"
MsgBox "zu kurz oder zu lang!"
Exit Sub
End If
'prüfe ob Zahl schon vorhanden
Dim lookupRng As Range
Dim testedNumber As Variant
testedNumber = CDec(TextBox1.Value)
Set lookupRng = wksi.Range("A:A")
matchResult = Application.Match(testedNumber, lookupRng, 0)
' Zahl nicht vorhanden, in letzte freie Zeile eintragen
If IsError(matchResult) Then
With wksi
lFreieman = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(lFreieman, 1).Value = TextBox1.Value
Label2.Caption = "Die Daten wurden übernommen !"
End With
Exit Sub
End If
' Zahl vorhanden, löschen anbieten
Label2.Caption = "gefunden ! Löschen?"
CommandButton2.Visible = False
CommandButton3.Visible = True
End Sub

Private Sub CommandButton3_Click()
wksi.Rows(matchResult).Delete Shift:=xlUp
Label2.Caption = "wurde gelöscht !"
TextBox1.Value = ""
CommandButton2.Visible = True
CommandButton3.Visible = False
End Sub

Private Sub TextBox1_Change()
' Label2.Caption = ""
CommandButton2.Visible = True
CommandButton3.Visible = False
End Sub
Aber es ist mir nicht ganz klar, wie oder wenn die Buttons invisible gemacht werden sollen?
Gruss Dan
Anzeige
AW: Problem mit Application.Match :(
16.10.2009 16:19:32
dan
Hi,
noch etwas, vielleicht besser waere dies:
lookupRng.Rows(matchResult).Cells(1).Value = ""

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige