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
15 stellige Zahl in Spalte finden!
Jaffi
Hallo Forum,
da meine Anfrage schon ziemlich nach unten gerutscht ist und ich immer noch keine wirkliche Lösung habe versuche ich es nochmal :(
Ich möchte ganz trivial per Userform eine 15 stellige Zahl in eine Spalte schreiben. Es soll aber vor dem Eintragen geprüft werden ob die Zahl schon vorhanden ist.
Ich hatte ein solches Problem schonmal mit Application.match gelöst. Es hiess jetzt aber, das _ diese Funktion ein Problem mit den 15 stellen hat. Der u.g. Code Zeigt wie ich es mit der Find Methode versucht habe:

Option Explicit
Public lFreieman As Long
Public manZeile As Range
Public wksi As Worksheets
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton2_Click()
Set wksi = Worksheets("i")
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!"
With wksi.Range("A:A")
Set manZeile = .Find(TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
End With
ElseIf Not manZeile Is Nothing Then
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()
wksi.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

Das Eintragen der Zahl funktioniert super..er prüft aber nicht ob sie schon vorhanden ist :(
Schaue ich mir die Einzelschritte an, überspringt er die find-Methode eiskalt. er ignoriert sie einfach :(
Was mache ich falsch? Ist die Findmethode auch nicht die Lösungs meines Problems?
Wie müsste der funktionierende Code aussehen?
Ich hoffe sehr Ihr könnt einer VBA-Anfängerin helfen, 2 Tage an diesem Problem und ich komm einfach nicht weiter
Tausend Dank
J.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
was soll der ganze VBA-Schrott ?
16.10.2009 17:26:57
WF
Hi,
ohne jetzt noch Bedingungen einzubauen (funktioniert natürlich):
=WENN(MAX(A:A)>10^14;MAX(A:A);"")
Salut WF
AW: Logik-Problem
16.10.2009 18:16:34
Daniel
Hi
15 Stellen sollten in Excel grad so noch funktionieren, erst die 16. Stelle wird gerundet.
ob ein Wert in einer Spalte vorhanden ist, kannst du doch in VBA einfach mit Worksheetfunction.CountIF prüfen, diese Funktion entspricht der Excel-Funktion ZählenWenn.
hier mal ein Anwendungsbeispiel:
Dim Zahl as Long
Zahl = 123456789012345
if Worksheetfunction.CounIf(Range("A:A"), Zahl) = 0 then
msgbox "Zahl " & Zahl & " ist in der Spalte A nicht vorhanden"
else
msgbox "Zahl " & Zahl & " ist in der Spalte A bereits vorhanden"
end if
Dein eigentliches Problem ist aber, daß du dich in deinen IF-Abfragen verhaspelt hast:
'

ElseIf Len(TextBox1.Value)  15 Then
Label2.Caption = "ungültig !"
MsgBox "zu kurz oder zu lang!"
With wksi.Range("A:A")
Set manZeile = .Find(TextBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
End With

weil an der mit ? markierten Stelle kein END IF steht, gehört die .FIND-Funktion noch zum ElseIf-Block darüber und wird demnach nur ausgeführtt, wenn die Eingabe nicht 15 Zeichen lang ist.
Gruß, Daniel
Gruß, Daniel
Anzeige
15-stellige Zahl in Spalte finden
17.10.2009 00:54:06
Erich
Hallo J. (?),
probier mal (ohne Public-Variablen):

Option Explicit
Private Sub CommandButton2_Click()
Dim varZ
If Not IsNumeric(TextBox1.Value) Then
MsgBox "keene Nummer"
Label2.Caption = "ungültig !"
ElseIf Len(TextBox1.Value)  15 Then
MsgBox "zu kurz oder zu lang!"
Label2.Caption = "ungültig !"
Else
With Worksheets("i")
varZ = Application.Match(CDbl(TextBox1.Value), Columns(1), 0)
If IsNumeric(varZ) Then
Label2.Caption = "gefunden ! Löschen?"
CommandButton2.Visible = False
CommandButton3.Visible = True
Else
.Cells(.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = TextBox1.Value
Label2.Caption = "Die Daten wurden übernommen !"
End If
End With
End If
End Sub
Voraussetzung: In Spalte A stehen tatsächlich 15-stellige Zahlen, keine Texte.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

346 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige