erst spalten prüfen danach wert eintragen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: erst spalten prüfen danach wert eintragen von: andreas
Geschrieben am: 08.03.2005 18:07:21

salü zusammen
vieles durfte ich bereits lernen in diesem forum und vieles ist noch unbekannt...

nachstehenden code habe ich in einer userform. nun möchte ich bevor die werte in die betreffenden spalten eingetragen werden eine überprüfung ob die neu eingegebene (in die userform) wert-konstellation bereits vorhanden ist. ist dies der fall soll der eintrag nicht übernommen werden stattdessen eine meldung erscheinen.

kann mir jemand weiterhelfen? wäre super.

Gruss Andreas


Private Sub CommandButton1_Click()
'vor dem eintragen der daten wird nachgefragt, ob alles richtig ist'
Dim mldg, stil, titel, grc
mldg = "Alles richtig eingetragen ?"
stil = vbYesNo + vbCritical + vbDefaultButton2
titel = "Frage ?"
grc = MsgBox(mldg, stil, titel)
If grc = vbYes Then
Else
Exit Sub
End If
'daten werden ins tabellenblatt eingetragen'
Sheets.Select
Range("A1").Select
Do Until ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Range("A1").Select
Loop
ActiveCell.Value = TextBox1.Text
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = TextBox5.Text
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.Value = TextBox4.Text
ActiveCell.Offset(0, 1).Range("A1").Select
'textbox wieder leeren
TextBox1.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
    Call UserForm_Initialize
End Sub

Bild


Betrifft: AW: erst spalten prüfen danach wert eintragen von: Luc ;-?
Geschrieben am: 08.03.2005 19:21:11

Hallo Andreas,
funktioniert denn das Pgm bisher? Ich hätte da Zweifel - zumindest würde ich nicht mit diesem verschobenen select arbeiten, sondern die Zellen direkt ansprechen mit cells(i,j).value und dann in der Schleife i bzw j jeweils um 1 erhöhen. Dann könnten auch sauber 3 Startzellen definiert wdn. Wenn du i und j static deklarierst, bleibt auch ihr Wert zwischen den PgmAufrufen erhalten. Beim Abgleich auf vorhandene Wertekombination könntest du die Werte der 3 Boxen und der 3 Zellen jeweils als String zusammenfassen und alle vorangehenden Zellkombinationen (in den Indizes i,j niedriger) in einer Unterschleife for k=1 to i... next k innerhalb von do until...loop abfragen.
Gruß Luc
:-?


Bild


Betrifft: AW: erst spalten prüfen danach wert eintragen von: andreas
Geschrieben am: 08.03.2005 21:25:45

hallo luc
äh... was heisst das für mich? leider bin ich in vba nicht wirklich gut... wie erwäht. kannst du mir vieleicht das geschriebene in einen code fassen? so hätte ich die möglichkeit zu versuchen deine ausführungen zu verstehen und etwas daraus zu lernen.
das wäre toll.
gruss andi


Bild


Betrifft: Hab jetzt kaum Zeit -- später! owT :-? von: Luc
Geschrieben am: 09.03.2005 08:55:02




Bild


Betrifft: AW: Lösungscode - spät aber versprochen ist... von: Luc :-?
Geschrieben am: 10.03.2005 21:23:12

Hallo Andreas,
habe ggw. für umfangreichere Sachen kaum Zeit, aber hab's fertig und getestet (allerdings nicht mit UserForm und TextBox, müsste aber klappen).


Private Sub CommandButton1_Click()
    Rem vor dem eintragen der daten wird nachgefragt, ob alles richtig ist!
    Dim mldg As String, titel As String, vgl As String, _
        tb As Variant, wk As Variant, stil As Long, i As Long, _
        grc As Integer, j As Integer
    tb = Array(TextBox1.Text, TextBox5.Text, TextBox4.Text)
    mldg = "Alles richtig eingetragen ?"
    stil = vbYesNo + vbQuestion + vbDefaultButton2
    titel = "Frage ?"
    grc = MsgBox(mldg, stil, titel)
    If grc <> vbYes Then Exit Sub
    Rem daten werden in alle exist tabblätter der akt Arbeitsmappe eingetragen !?
    Sheets.Select  'b. 1 exist u.auf akt Blatt übflüss, sonst Sheets(blattnr/name)
    i = 1
    wk = Array(Cells(i, 1).Value, Cells(i, 2).Value, Cells(i, 3).Value)
    vgl = Join(tb, ";")          'wk u. tb angelegt, damit Join verwendet wdn kann
    Do Until Join(wk, ";") = ";;"
        If Join(wk, ";") = vgl Then
            MsgBox "Wertekombination " & vgl & " schon vorhanden in Zeile " & _
                   i & " !", vbCritical, "Daten !"
            GoTo ex
        End If
        i = i + 1
        wk = Array(Cells(i, 1).Value, Cells(i, 2).Value, Cells(i, 3).Value)
    Loop
    For j = 0 To 2
        Cells(i, j + 1).Value = tb(j)
    Next j
ex: Rem textbox wieder leeren
    TextBox1.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""
    Call UserForm_Initialize
End Sub


Erläuterungen im Code. Wenn noch Fragen auftauchen, aber auch wenn's funktioniert, melde dich.
Ciao Luc
:-?


Bild


Betrifft: ...und funktioniert's? Oder woanders fündig? owT von: Luc :-|
Geschrieben am: 11.03.2005 20:51:23

:-|


Bild


Betrifft: AW: Lösungscode - spät aber versprochen ist... von: Andreas
Geschrieben am: 11.03.2005 21:14:34

hallo luc
vielen herzlichen dank für eine mühe. habe mir das ganze noch nicht angeschaut. werde es aber raschnöglichst machen und feedback geben.

ein schönes wochenende
gruss andi


Bild


Betrifft: Naja, dann kam's zeitlich wohl zurecht! OK owT von: Luc :-?
Geschrieben am: 11.03.2005 21:21:22




Bild


Betrifft: AW: Naja, dann kam's zeitlich wohl zurecht! OK owT von: Andreas
Geschrieben am: 12.03.2005 21:48:09

hallo luc
super, genau so habe ich es mir vorgestellt. vielen dank für deine hilfe. drei fragen habe ich noch dazu.
1. wo fixiere ich die anzahl der einträge in die jeweilige zeile? es geht um insgesamt 13 einträge.
2. du hast erwähnt, dass einträge auf alle vorhandenen tabellenblätter eingetragen werden. bei deinem makro wird jedoch nur im ersten blatt eingetragen. was muss ich genau eingeben?
3. kann ich auch nur einzelne zellen in alle (insgesammt 8 tabellenblätter) eintragen lassen?

vieleicht findest du nochmals etwas zeit für meine fragen? auf jedenfall hat mir deine lösung bereits einiges weitergeholfen und vieleicht komme ich selbst noch auf die lösungen zu meinen fragen. würde mich auf jeden fall nochmals melden.

nochmals vielen dank
gruss andreas


Bild


Betrifft: OK, hab's notiert! owT von: Luc :-?
Geschrieben am: 12.03.2005 23:35:10




Bild


Betrifft: AW: vielen dank owT von: andreas
Geschrieben am: 13.03.2005 08:35:05




 Bild

Beiträge aus den Excel-Beispielen zum Thema "erst spalten prüfen danach wert eintragen"