Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
392to396
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
392to396
392to396
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Überprüfung der Eingabe

Überprüfung der Eingabe
07.03.2004 22:27:24
Burkhard
Hallo Fans,
mit folgendem Code schreibe ich den Inhalt von Text- u. ComboBoxen in eine Tabelle:


Private Sub CommandButton4_Click()
Tabelle1.Select
Z = Range("A1").End(xlDown).Row + 1
If Z > 65000 Then Z = 2
Do While Cells(Z, 1) <> ""
Z = Z + 1
Loop
Cells(Z, 1) = TextBox1
Cells(Z, 2) = TextBox2
Cells(Z, 3) = TextBox3
Cells(Z, 4) = ComboBox1
Cells(Z, 5) = ComboBox2
Cells(Z, 5) = CDbl(ComboBox2)
Cells(Z, 6) = ComboBox3
Cells(Z, 7) = ComboBox4
Cells(Z, 8) = ComboBox5
Cells(Z, 9) = ComboBox6
Cells(Z, 9) = CDbl(CombBox9)
Cells(Z, 10) = ComboBox7
Cells(Z, 10) = CDbl(ComboBox7)
Cells(Z, 11) = ComboBox8
Cells(Z, 11) = CDbl(ComboBox8)
Cells(Z, 12) = ComboBox9
End Sub


Wie kann ich nun per VBA nun überprüfen, ob ich diese Zeile schon geschrieben habe, um doppelte Eingaben zu vermeiden? TextBox3 gilt hier als Kriterium.
Danke schon mal fur Eure Mühe, Gruß Burkhard

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überprüfung der Eingabe
07.03.2004 22:34:52
Boris
Hi Burkhard,
dein Code ist (für mich) nicht logisch.
Z.B. belegst du hintereinander Cells(Z, 9) einmal mit Box 6 und dann mit Box 9 - das macht doch keinen Sinn.
Und den Anfang versteh ich auch nicht:
Erst nach unten hin die nächste freie Zelle suchen - um dann mit Do-Loop Nichtleere Zellen zu loopen?
Und wenn das Ganze unterhalb 65000 stattfindet, dann geht´s halt wieder in zeile 2 weiter - somit würde alles überschrieben?
Ansonsten die schnellste Methode zum Prüfen auf Doppelte: Find-Methode.
Aber klär mich (uns) doch erstmal etwas mehr auf.
Grüße Boris
AW: Überprüfung der Eingabe
07.03.2004 22:42:41
Burkhard
Sorry, da waren ein paar Schreibfehler (z, 9)natürlich mit CDbl ComboBox6.
Der Code ist aus dem Forum und funktioniert einwandfrei. Wenn Du eine Bessere Idee hast, dann antworte bitte. Was ich halt will, ist, doppelte Eingaben vermeiden. Da ich VBA-Anfänger bin, weiß ich (noch) nicht, wie es geht. Dafür brauche ich Eure Hilfe.
Danke, Burkhard
Anzeige
AW: Überprüfung der Eingabe
07.03.2004 22:51:16
Boris
Hi Burkhard,
um den Code zu verbessern (was zweifelsohne machbar ist), müsstest du aber erstmal alle meine Fragen beantworten respektive genau beschreiben, was der Click auf den Commandbutton bewirken soll (bzw. ab wo die Daten eingetragen werden sollen, was ist, wenn die Spalte voll ist etc...)
Ansonsten (aus der Hand geschrieben) zu Beginn des Codes::
Dim C as Range
Set C = Tabelle1.Range("C:C").Find(Textbox3, LookAt:=xlWhole)
If Not C Is Nothing then
Msgbox "Schon vorhanden...",,"Gebe bekannt..."
Exit Sub
End If
Und ab hier dein weiterer Code...
Grüße Boris
Anzeige
AW: Überprüfung der Eingabe
07.03.2004 23:04:36
Burkhard
Hi Boris, yo, es funzt. Danke Dir schön. Hast Du noch ein paar Anmerkungen zum Code des Übertragens in die Tabelle?
Wenn nicht noch ´n schönen Sonntag.
AW: Überprüfung der Eingabe
07.03.2004 23:08:32
Boris
Hi Burkhard,
...hier schließe ich mich Peter an: Das bloße Übertragen ist schon o.k.
Jedoch das Ermitteln der richten Zeile ist mehr als umständlich. Wenn die Einträge immer ans unterste Ende angefügt werden sollen, hat Peter dir den richtigen Ansatz geliefert: Von unten nach oben vorgehen und nicht umgekehrt.
Ansonsten würdest du hier nen eleganteren Code bekommen - aber ich sag jetzt zum 3. mal, dass dazu die notwendigen Detailangaben fehlen.
Grüße Boris
Anzeige
AW: Überprüfung der Eingabe
07.03.2004 23:16:48
Burkhard
Hi Boris,
1. Der CommandButton heißt "Daten übertragen". Mit Click hierauf sollen die Daten in die Exceltabelle geschrieben werden.
2. Hierzu muss die nächste freie Zeile ermittelt werden. (natürlich von oben).
3. Doppelte Eingaben sollen vermieden. Dafür als Relevanz Textbox3.
4. Es darf nichts überschrieben werden.
Alles klar? Gruß Burkhard

Überarbeiteter Code
08.03.2004 09:35:12
Boris
Hi Burkhard,
was bei voller Spalte passieren soll, weiss ich immer noch nicht.
Aber so könnte es z.B. aussehen:
Option Explicit

Private Sub CommandButton4_Click()
Dim C As Range, Z As Long
Set C = Tabelle1.Range("C:C").Find(TextBox3, LookAt:=xlWhole)
If Not C Is Nothing Then
MsgBox "Schon vorhanden...", , "Gebe bekannt..."
Exit Sub
End If
Z = IIf(IsEmpty([a65536]), [a65536].End(xlUp).Row, 65536) + 1
If Z >= 65536 Then
MsgBox "Ich weiss nicht, was jetzt passieren soll...", , "Spalte ist voll..."
Exit Sub
End If
With Tabelle1
.Cells(Z, 1) = TextBox1
.Cells(Z, 2) = TextBox2
.Cells(Z, 3) = TextBox3 'ab hier noch die anderen Boxen ergänzen!!!!
End With
End Sub

Anzeige
AW: Überarbeiteter Code
08.03.2004 10:01:32
Burkhard
Hi Boris, vielen Dank, aber so fügt er den Code ganz unten ein, und nicht oben in Zeile 2, wei von mir gewünscht.
Gruß, Burkhard
Hat sich erledigt.
08.03.2004 10:08:19
Burkhard
Hi Boris, habe auf [a1] abgeändert, funktioniert, DANKE!!!!
NEIN!!!!
08.03.2004 10:23:39
Boris
Hi Burkhard,
"...habe auf [a1] abgeändert, ..."
Bloß nicht! Und wenn doch, dann poste den geänderten Code hier niemals unter meinem Namen;-))
Denn das widerspricht komplett der Logik des Codes.
Aber dein Tabellenaufbau scheint doch etwas anders zu sein, als man annehmen durfte...
Grüße Boris
AW: NEIN!!!!
08.03.2004 10:32:17
Burkhard
Der code:

Private Sub CommandButton4_Click()
With Tabelle1
Dim C As Range, Z As Long
Set C = Tabelle1.Range("C:C").Find(TextBox3, LookAt:=xlWhole)
If Not C Is Nothing Then
MsgBox "Schon vorhanden...", , "Gebe bekannt..."
Exit Sub
End If
Z = IIf(IsEmpty([a1]), [a1].End(xlUp).Row, 1) + 1
If Z >= 65536 Then
MsgBox "Ich weiss nicht, was jetzt passieren soll...", , "Spalte ist voll..."
Exit Sub
End If
Tabelle1.Select
Cells(Z, 1) = TextBox1
Cells(Z, 1) = CDbl(TextBox1)
Cells(Z, 2) = TextBox2
Cells(Z, 3) = TextBox3
Cells(Z, 3) = CDbl(TextBox3)
Cells(Z, 4) = ComboBox1
Cells(Z, 5) = ComboBox2
Cells(Z, 5) = CDbl(ComboBox2)
Cells(Z, 6) = ComboBox3
Cells(Z, 6) = CDbl(ComboBox3)
Cells(Z, 7) = ComboBox4
Cells(Z, 7) = CDbl(ComboBox4)
Cells(Z, 8) = ComboBox5
Cells(Z, 8) = CDbl(ComboBox5)
Cells(Z, 9) = ComboBox6
Cells(Z, 9) = CDbl(ComboBox9)
Cells(Z, 10) = ComboBox7
Cells(Z, 10) = CDbl(ComboBox7)
Cells(Z, 11) = ComboBox8
Cells(Z, 11) = CDbl(ComboBox8)
Cells(Z, 12) = ComboBox9
Cells(Z, 12) = CDbl(ComboBox9)
End With
End Sub

Ciao, Burkhard, bis heute abend.
Anzeige
Ich geb´s auf...
08.03.2004 10:53:32
Boris
Hi Burkhard,
...das mag dein Code sein - er ist aber bitteschön nicht von mir...
Du füllst nach wie vor ein und die selbe Zelle (Cells(Z,9)) mit Box 6 und Box 9, die Zeile
Z = IIf(IsEmpty([a1]), [a1].End(xlUp).Row, 1) + 1
ist mit deiner [a1]-Änderung mehr als sinnlos, zudem selektierst du die Tabelle 1 - wozu?
Na ja - wenn es deinen Anforderungen entspricht, ist ja gut. Ansonsten halte ich mich jetzt raus...
Grüße Boris
AW: Überprüfung der Eingabe
07.03.2004 22:45:21
PeterW
Hallo Burkhard,
mit der Logik des Codes hab ich auch meine Probleme. Die erste freie Zeile findest du am einfachsten indem du von A65536 nach oben prüfst (End(xlUp)).
Wenn es darum geht, dass du einen Datensatz nicht direkt nacheinander doppelt eingeben willst prüfe Cells(Z - 1, 3) auf ungleich TextBox3.
Gruß
Peter
Anzeige
AW: Überprüfung der Eingabe
07.03.2004 22:51:58
Burkhard
Hallo Peter,
wie schon gesagt, den Code habe ich aus dem Forum. Ob erlogisch ist oder nicht, kann ich (noch) nicht überprüfen. Wenn ich etwas mehr von VBA verstehe, dann kann ich. Aber Frage: wie würdest Du den Inhalt der Text- u. Comboxen in die Tabelle schreiben? Gib mir bitte dein Beispielcode.
Danke, Burkhard
P. S.: Die Überprüfung auf schon eingegebene Datensätze muss über die ganze Tabelle erfolgen. Der Inhalt von TextBox3 ist hie eindeutig.
Danke, Burkhard.
AW: Überprüfung der Eingabe
07.03.2004 23:00:32
PeterW
Hallo Burkhard,
der Hinweis von Boris bezüglich TextBox3 ist zielführend. Die Übertragung der Werte in die Tabelle ist schon okay.
Gruß
Peter
PS: was den Code aus dem Forum angeht: du findest hier sicherlich viele gute bis sehr gute Ansätze, aber leider auch das Ergebnis von wohlwollenden Helfern, die besser noch etwas üben sollten, bevor sie Codelösungen posten. Falls sich mit dieser Aussage jemand auf den Schlips getreten fühlt möchte ich mich dafür entschuldigen.
Anzeige
AW: Überprüfung der Eingabe
07.03.2004 23:07:40
Burkhard
Hallo Peter, das es funzt, hast du sicherlich schon gelesen. Aber wenn ich von euch da draußen etwas bekomme, und es läuft, hab ich nichts dagegen. Irgendwann (in absehbarer Zukunft, werde ich euch in VBA helfen können.
Danke noch mal an dich und alle anderen.
Gruß Burkhard

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige