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

Neuaufnahme in Tabelle....geht das eleganter?

Neuaufnahme in Tabelle....geht das eleganter?
12.10.2004 20:40:45
Peter
Hallo Ihr Lieben,
bin mittlerweile ganz froh, dass ich mit VBA wenigstens was anfangen kann, was auch fehlerfrei funktioniert...aber hat von Euch jemand ne Idee.....das Monster wie nachstehend geht doch bestimmt auch etwas eleganter, oder?....Damit schreibe ich Neuaufnahmen in eine Tabelle und prüfe zwischendurch mit "Call DoppelteB" ab. ob die Kundennummer in Spalte 1 bereits vorhanden ist, wenn ja starte ich ne UF mit dem Warnhinweis und schreibe dann die Dublette in eine "Ausweichtabelle", die sich immer wieder leert..
If UserForm2.ComboBox2.Value = "2003 monatlich" Then
Sheets("Bm2003").Activate
Call DoppelteB
For iCounter = 1 To 41
If UserForm2.Controls("TextBox" & iCounter).Value = "" Then
UserForm2.Controls("TextBox" & iCounter).Value = "n.b."
End If
Sheets("Bm2003").Visible = True
Next iCounter
z = Range("A1000").End(xlUp).Row
Cells(z + 1, 1) = UserForm2.TextBox1.Value
Cells(z + 1, 2) = UserForm2.TextBox2.Value
Cells(z + 1, 3) = UserForm2.TextBox3.Value
Cells(z + 1, 4) = UserForm2.TextBox4.Value
Cells(z + 1, 5) = UserForm2.TextBox5.Value
Cells(z + 1, 6) = UserForm2.TextBox6.Value
Cells(z + 1, 7) = UserForm2.TextBox7.Value
Cells(z + 1, 8) = UserForm2.TextBox8.Value
Cells(z + 1, 9) = UserForm2.TextBox9.Value
Cells(z + 1, 10) = UserForm2.TextBox10.Value
Cells(z + 1, 11) = UserForm2.TextBox11.Value
Cells(z + 1, 12) = UserForm2.TextBox12.Value
Cells(z + 1, 13) = UserForm2.TextBox13.Value
Cells(z + 1, 14) = UserForm2.TextBox14.Value
Cells(z + 1, 15) = UserForm2.TextBox15.Value
Cells(z + 1, 16) = UserForm2.TextBox16.Value
Cells(z + 1, 17) = UserForm2.TextBox17.Value
Cells(z + 1, 18) = UserForm2.TextBox18.Value
Cells(z + 1, 19) = UserForm2.TextBox19.Value
Cells(z + 1, 20) = UserForm2.TextBox20.Value
Cells(z + 1, 21) = UserForm2.TextBox21.Value
Cells(z + 1, 22) = UserForm2.TextBox22.Value
Cells(z + 1, 23) = UserForm2.TextBox23.Value
Cells(z + 1, 24) = UserForm2.TextBox24.Value
Cells(z + 1, 25) = UserForm2.TextBox25.Value
Cells(z + 1, 26) = UserForm2.TextBox26.Value
Cells(z + 1, 27) = UserForm2.TextBox27.Value
Cells(z + 1, 28) = UserForm2.TextBox28.Value
Cells(z + 1, 29) = UserForm2.TextBox29.Value
Cells(z + 1, 30) = UserForm2.TextBox30.Value
Cells(z + 1, 31) = UserForm2.TextBox31.Value
Cells(z + 1, 32) = UserForm2.TextBox32.Value
Cells(z + 1, 33) = UserForm2.TextBox33.Value
Cells(z + 1, 34) = UserForm2.TextBox34.Value
Cells(z + 1, 35) = UserForm2.TextBox35.Value
Cells(z + 1, 36) = UserForm2.TextBox36.Value
Cells(z + 1, 37) = UserForm2.TextBox37.Value
Cells(z + 1, 38) = UserForm2.TextBox38.Value
Cells(z + 1, 39) = UserForm2.TextBox39.Value
Cells(z + 1, 40) = UserForm2.TextBox40.Value
Cells(z + 1, 41) = UserForm2.TextBox41.Value
myArr = Sheets("Bm2003").Range("A4:AO1000")
Sheets("Bm2003").Visible = xlVeryHidden
UserForm2.ComboBox1 = ""
UserForm2.ComboBox1.List = myArr
For iCounter = 1 To 41
UserForm2.Controls("TextBox" & iCounter) = ""
Next iCounter
End If
Danke für Eure Mühe
Peter S.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neuaufnahme in Tabelle....geht das eleganter?
Beni
Hallo Peter,
integriere die Cells in die Schleife.
Gruss Beni
If UserForm2.ComboBox2.Value = "2003 monatlich" Then
Sheets("Bm2003").Activate
Call DoppelteB
z = Range("A1000").End(xlUp).Row
For iCounter = 1 To 41
If UserForm2.Controls("TextBox" & iCounter).Value = "" Then
UserForm2.Controls("TextBox" & iCounter).Value = "n.b."
Cells(z + 1, iCounter) = UserForm2.Controls("TextBox" & iCounter).Value
End If
Sheets("Bm2003").Visible = True
Next iCounter
myArr = Sheets("Bm2003").Range("A4:AO1000")
Sheets("Bm2003").Visible = xlVeryHidden
UserForm2.ComboBox1 = ""
UserForm2.ComboBox1.List = myArr
For iCounter = 1 To 41
UserForm2.Controls("TextBox" & iCounter) = ""
Next iCounter
End If
Anzeige
Hallo Beni
12.10.2004 21:13:06
Peter
Hi Beni,
danke das werde ich morgen früh gleich ausprobieren......gegen 10 Uhr hast Du garantiert ne Antwort von mir........vielen Dank......hab mir das alles autodidaktisch beigebracht und steh jetzt vor der 2. Stufe.....alles etwas "spaarender" zu gestalten
Bis morgen
Peter S.
Hmm.....Beni, irgendwo is n Fehler
Peter
Hallo Beni,
hab mich grade in den Firmenrechner eingeloggt.......war einfach neugierig Deinen Code auszuprobieren.......aber er funzt nicht...Frage:
nach dem Ersetzen der Leerzellen durch "n.B." müsste da nicht ein "else" stehen, als Alternative?...........oder lese ich den Code falsch?
Gruß
Peter S.
Anzeige
AW: Hmm.....Beni, irgendwo is n Fehler
Reinhard
Hi Peter,
nein, ist schon so korrekt, du hattest vorher deine 41er Schleife fürs ersetzen und dann deine 41 Cells(z+1,1)....cells(z+1,41) Befehle, die wurden vereint in der 41er Schleife, also kein Else.
"Aber es funzt nicht" ist zu mager um als Hilfe für Helfer zu gelten, beschreib mal, was, wie eo nicht funktioniert, Fehlerzeile, welcher fehler...
Gruß
Reinhard
Sorry für einen "Allgemeinplatz"
12.10.2004 21:52:16
Peter
Hallo Reinhard,
ja sorry.......du hast natürlich recht.....is zu mager...es kommt auch keine Fehlermeldung...weder beim kompilieren, noch in der realen Aktion........aber der Datensatz kommt nicht in der Tabelle an.....er scheint im Nirwana zu sein. Am "Call DoppelteB" kann es meiner Meinung nicht liegen....hat mit meinem einfachen Code ja auch funktioniert....zur Sicherheit stelle ich ihn hier rein

Sub DoppelteB()
Dim var As Variant
Dim intRow As Integer
If UserForm2.ComboBox2.Value = "2003 monatlich" Then
var = Application.Match(UserForm2.TextBox1.Value, Columns(1), 0)
If Not IsError(var) Then
frmWarnungB.Show
End If
End If
If UserForm2.ComboBox2.Value = "2003 vierteljährlich" Then
var = Application.Match(UserForm2.TextBox03q1.Value, Columns(1), 0)
If Not IsError(var) Then
frmWarnungB.Show
End If
End If
If UserForm2.ComboBox2.Value = "2003 jährlich" Then
var = Application.Match(UserForm2.TextBox03j1.Value, Columns(1), 0)
If Not IsError(var) Then
frmWarnungB.Show
End If
End If
End Sub

Ich hoffe das hilft als "Anschub" für dich weiter........
Danke
Peter S.
Anzeige
Hallo Reinhard
12.10.2004 22:02:10
Peter
Hi Reinhard,
ich hab jetzt den Code von Beni wieder mit meinem "umständlichen" Code vertauscht....dann schreibt er den Datensatz korrekt rein
Gruß
Peter S.
AW: Hallo Reinhard
Reinhard
Hi Peter,
habs jetzt ungetestet mal umgeschrieben, aber auch bei Bennys Code sah ich keinen Fehler.
Da Bennys und meine Änderungen erst nach dem Call drinstehen, kann es m.E. daran nicht liegen.
Wenn meine Version auch nicht klappt, dann stell doch mal ne Beispieldatei hier hoch, dann müssen ich, Benny und andere das nicht nachbauen.
Gruß
Reinhard
Reinhard..nicht zu viel Aufwand
12.10.2004 22:40:42
Peter
Hi Reinhard,
nein, nein nicht zu viel Aufwand treiben........aber ich seh leider Deinen Code nicht...wenn ich ihn probieren dürfte.......könnt ich was dazu sagen........und wenn alles nicht funzt extrahier ich das Ganze aus meiner Anwendung und stell es morgen früh als Datei rein...
Vielen Dank für Deine Mühe
Peter S.
Anzeige
ups, hatte den Code vergessen :-)
Reinhard
Hi Peter,

Sub tt()
If UserForm2.ComboBox2.Value = "2003 monatlich" Then
With Sheets("Bm2003")
.Activate
.Visible = True
Call DoppelteB
z = .Range("A65536").End(xlUp).Row
For iCounter = 1 To 41
If UserForm2.Controls("TextBox" & iCounter).Value = "" Then _
UserForm2.Controls("TextBox" & iCounter).Value = "n.b."
.Cells(z + 1, iCounter) = UserForm2.Controls("TextBox" & iCounter).Value
Next iCounter
myArr = .Range("A4:AO1000")
.Visible = xlVeryHidden
UserForm2.ComboBox1 = ""
UserForm2.ComboBox1.List = myArr
For iCounter = 1 To 41
UserForm2.Controls("TextBox" & iCounter) = ""
Next iCounter
End With
End If
End Sub

Gruß
Reinhard
Anzeige
Reinhard....hab Deinen Code ausprobiert
13.10.2004 10:03:08
Peter
Hallo Reinhard,
hab Deinen Code gerade ausprobiert, er schreibt den Datensatz sauber in die Tabelle rein...soweit bestens, jedoch ein Problem....ist es eine Dublette, dann aktiviert sich zwar wie bei meinem Code auch die UF "Warnung", jedoch schreibt sich dann die Dublette trotzdem in die Tabelle "Bm2003" anstatt in die Ausweichtabelle "Tabelle16"(Code der UF Warnung ist unten angegeben)
Sub DoppelteB()
Dim var As Variant
Dim intRow As Integer
If UserForm2.ComboBox2.Value = "2003 monatlich" Then
var = Application.Match(UserForm2.TextBox1.Value, Columns(1), 0)
If Not IsError(var) Then
frmWarnungB.Show
End If
End If
End Sub
Nachstehend der Code der UF Warnung:

Private Sub CommandButton1_Click()
Sheets("Tabelle16").Activate
Unload Me
End Sub

Viele Grüße
Peter S.
Anzeige
Reinhard....verwende ne Mischform
Peter
Hallo Reinhard,
hab jetzt gerade noch mal ne Mischform aus meinem und Deinem Code gebastelt....da funzt es komplett richtig.

Sub Neuaufnahme()
If UserForm2.ComboBox2.Value = "2003 monatlich" Then
Sheets("Bm2003").Activate
Call DoppelteB
For iCounter = 1 To 41
If UserForm2.Controls("TextBox" & iCounter).Value = "" Then
UserForm2.Controls("TextBox" & iCounter).Value = "n.b."
End If
Sheets("Bm2003").Visible = True
Next iCounter
z = Range("A1000").End(xlUp).Row
For iCounter = 1 To 41
Cells(z + 1, iCounter) = UserForm2.Controls("TextBox" & iCounter).Value
Next iCounter
myArr = Sheets("Bm2003").Range("A4:AO1000")
Sheets("Bm2003").Visible = xlVeryHidden
UserForm2.ComboBox1 = ""
UserForm2.ComboBox1.List = myArr
For iCounter = 1 To 41
UserForm2.Controls("TextBox" & iCounter) = ""
Next iCounter
End If
End Sub

Ich denke damit sollten wir die Problemstellung als gelöst ansehen.
Vielen Dank für Deine Mühe
Peter S.
Anzeige
erledigt...
oT

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige