Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: intelligente Tabelle VBA Code für Maske Dateneingabe

intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 10:52:12
Peter
Hallo an alle

wie lautet der VBA Code, wenn man bei einer intelligenten Tabelle die Datenmaske aufrufen will?
Der Code ActiveSheet.ShowDataForm funktioniert leider nicht.
Vielen Dank für Eure Hilfe

MfG Peter
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 11:16:36
Alwin Weisangler
Hallo Peter,

Das klappt schon mit einem Listobjekt, aber die Tabelle muss mit den Überschriften bei A1 beginnen.
getestet mit MS-O2019:


Sub test()
ActiveSheet.ShowDataForm
End Sub

Allerdings kann man die Werte einfach in die Tabelle eintragen. Falls irgenwelche Eingabeeinschränkungen ein direktes Eintragen in die Tabelle erreicht werden sollen, kann man dies mit einem Userform oder mit Ribbonelementen regeln.
Aber das war ja nicht deine Frage.

Gruß Uwe
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 11:25:15
Peter
Hallo Uwe

vielen Dank für Deine schnelle Nachricht.
Der Code funktioniert aber er zeigt mir nur die ersten3 Spalten an
Ich lade mal die Datei hoch, damit Du siehst was ich meine

MfG Peter

https://www.herber.de/bbs/user/172567.xlsm
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 11:45:19
Alwin Weisangler
Hallo Peter,

ich hatte dir ja geschrieben, dass damit es klappt das Listbobjekt ab A1 beginnen muss.
In A1-C1 wird das Datum als Tabelle erkannt.
Entweder das Tabellenblatt umbauen und Buttons ins Ribbon sowie auf die Datumsspielerei verzichten damit es funktioniert oder Userform bzw. Elemente ins Ribbon packen.

Gruß Uwe
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 12:51:14
Peter
Hallo Uwe

Wie macht man das ?
Userform bzw. Elemente ins Ribbon packen.

MfG Peter
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 13:28:26
Alwin Weisangler
Hallo Peter,

Sollen nur Daten in die Tabelle nur eingetragen werden oder sollen auch Daten der Tabelle geändert oder gelöscht werden.

Gruß Uwe
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 15:10:05
Peter
Hallo Uwe

Danke für Deine Nachricht.
Ändern und löschen soll auch auch möglich sein.

Passwort für die Makros Schwein1

Gruß Peter
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 15:31:21
Alwin Weisangler
ich hab mal eine auf meinem Rechner rumliegende gut anpassbare Userform eingebaut.
https://www.herber.de/bbs/user/172579.xlsm
Da sind auch Comboboxen zwecks Auswahlmöglichkeiten, welche noch eingebaut werden können drin.

Gruß Uwe
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
04.10.2024 16:36:02
Peter
Hallo Uwe

Das ist ja Klasse!!!
Vielen Dank.
2 Änderungswünsche habe ich noch

1. Können die Felder von PLZ bis Bemerkungen in der Maske beim Aufruf leer bleiben?
2. Ist es möglich, die Felder Ort und VNB zu sperren, da ich mir sonst die dahinterliegenden Formeln selbst lösche

Gruß Peter

Ich versuche schon seit Wochen so etwas hinzubekommen und Du machst das in 10 min.
Respekt!!!
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
05.10.2024 10:44:48
Peter
Hallo Alwin
Vielen Dank für die schnelle Bearbeitung der Änderungswünsche.
Läuft prima.
Wäre es möglich noch ein Butten mit dem Feld Neu hinzuzufügen?
So daß nach Speicherung der eingegebenen Daten auf ein Butten Neu geklickt werden muss und die Felder wieder leer sind.
Natürlich nur, wenn es nicht soviel Aufwand bereitet.
Tolle Arbeit von Dir. Ganz großen Respekt und vielen lieben Dank

MfG
Peter
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
05.10.2024 11:13:47
Alwin Weisangler
Hallo Peter,

der Button existiert bereits im Userform.
Tausche diese Prozedur aus:


Private Sub Cmd_NeuerEintrag_Click()
Dim i&, arrZeile()
For i = 2 To 3
If Controls(arrControls(i)) = "" Then
MsgBox Controls(arrControls(i)).Name & " ist ein Pflichtfeld", vbInformation, "Problem Pflichtfeld"
Controls(arrControls(i)).SetFocus
Exit Sub
End If
Next i
ReDim arrZeile(1 To 1, 1 To UBound(arrControls) + 1)
For i = 1 To UBound(arrZeile, 2)
If i = 4 Or i = 8 Or i = 11 Then

If i = 4 Then
If IsNumeric(Controls(arrControls(i - 1))) Then
arrZeile(1, i) = CDbl(Controls(arrControls(i - 1)))
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
End If
If i = 8 Then arrZeile(1, i) = CDate(Controls(arrControls(i - 1)))
If i = 11 Then arrZeile(1, i) = CDate(Controls(arrControls(i - 1)))
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
Next i
With dynTab
'.ListRows.Add.Range.Resize(UBound(arrZeile)) = arrZeile
.ListRows.Add
For i = 1 To UBound(arrZeile, 2)
If Not i = 2 And Not i = 9 Then
With .DataBodyRange
.Cells(.Rows.Count, i) = arrZeile(1, i)
End With
End If
Next i

With .DataBodyRange.Cells(.ListRows.Count, SpaltePLZ)
.NumberFormat = "00000"
.RowHeight = 52.5
End With

End With
With ListBox1
.AddItem dynTab.ListRows.Count
.ListIndex = .ListCount - 1
For i = 1 To UBound(arrZeile, 2)
.List(.ListCount - 1, i) = arrZeile(1, i)
Next i
.ListIndex = -1
End With
For i = 0 To UBound(arrControls)
Controls(arrControls(i)).Value = ""
Next i
End Sub

Gruß Uwe
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
05.10.2024 12:50:44
Peter
Hallo Uwe

Vielen Dank nochmal für Deine professionelle Hilfe.
Bist ein Hero!!

Gruß Peter
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
05.10.2024 15:39:41
Peter
Hi Uwe

Mir ist noch etwas aufgefallen. Beim den Datumsbutten will er unbedingt ein Datum haben. Aber das Versendedatum kann nicht in das Feld geschrieben werden, wenn die Teile noch nicht versendet wurden. Geht das zu ändern?
Ist es möglich, daß bis auf Spalte 1, wo eine Eingabe zwingend erforderlich ist, die anderen Spalten so umzubauen, daß die Daten übernommen werden, auch wenn in den einzelnen Felder nichts steht?
( Mitunter sind nicht immer alle Daten verfügbar )

Gruß und Dank Peter
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
05.10.2024 18:21:32
Alwin Weisangler
Hallo Peter,

tausche diese 2 Prozeduren aus:


Private Sub Cmd_NeuerEintrag_Click()
Dim i&, arrZeile()
For i = 2 To 3
If Controls(arrControls(i)) = "" Then
MsgBox Controls(arrControls(i)).Name & " ist ein Pflichtfeld", vbInformation, "Problem Pflichtfeld"
Controls(arrControls(i)).SetFocus
Exit Sub
End If
Next i
ReDim arrZeile(1 To 1, 1 To UBound(arrControls) + 1)
For i = 1 To UBound(arrZeile, 2)
If i = 4 Or i = 8 Or i = 11 Then

If i = 4 Then
If IsNumeric(Controls(arrControls(i - 1))) Then
arrZeile(1, i) = CDbl(Controls(arrControls(i - 1)))
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
End If
If i = 8 And IsDate(Controls(arrControls(i - 1))) Then
arrZeile(1, i) = CDate(Controls(arrControls(i - 1)))
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
If i = 11 And IsDate(Controls(arrControls(i - 1))) Then
arrZeile(1, i) = CDate(Controls(arrControls(i - 1)))
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
Next i
With dynTab
'.ListRows.Add.Range.Resize(UBound(arrZeile)) = arrZeile
.ListRows.Add
For i = 1 To UBound(arrZeile, 2)
If Not i = 2 And Not i = 9 Then
With .DataBodyRange
.Cells(.Rows.Count, i) = arrZeile(1, i)
End With
End If
Next i

With .DataBodyRange.Cells(.ListRows.Count, SpaltePLZ)
.NumberFormat = "00000"
.RowHeight = 52.5
End With

End With
With ListBox1
.AddItem dynTab.ListRows.Count
.ListIndex = .ListCount - 1
For i = 1 To UBound(arrZeile, 2)
.List(.ListCount - 1, i) = arrZeile(1, i)
Next i
.ListIndex = -1
End With
For i = 0 To UBound(arrControls)
Controls(arrControls(i)).Value = ""
Next i
End Sub




Private Sub Cmd_EintragAendern_Click()
Dim i&, iZeile&, iIndex&, arrZeile()
ReDim arrZeile(1 To 1, 1 To UBound(arrControls) + 1)
If ListBox1.ListIndex = -1 Then
MsgBox "Kein Datensatz zum Ändern vorhanden", vbInformation, "Problem! Ändern"
Exit Sub
End If
iZeile = ListBox1.List(ListBox1.ListIndex, 0)
iIndex = ListBox1.ListIndex
If Schreibschutz = False Then
MsgBox "Es wurde kein Eintrag ausgewählt", vbInformation
Else
For i = 1 To UBound(arrZeile, 2)
If i = 4 Or i = 8 Or i = 11 Then
If IsNumeric(Controls(arrControls(i - 1))) Then
arrZeile(1, i) = CDbl(Controls(arrControls(i - 1)))
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
If i = 8 And IsDate(Controls(arrControls(i - 1))) Then
arrZeile(1, i) = CDate(Controls(arrControls(i - 1)))
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
If i = 11 And IsDate(Controls(arrControls(i - 1))) Then
arrZeile(1, i) = CDate(Controls(arrControls(i - 1)))
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
Else
arrZeile(1, i) = Controls(arrControls(i - 1))
End If
Next i
With dynTab.DataBodyRange
'.Rows(iZeile).Resize(UBound(arrZeile, 1), UBound(arrZeile, 2)) = arrZeile
For i = 1 To UBound(arrZeile, 2)
If Not i = 2 And Not i = 9 Then
.Cells(iZeile, i) = arrZeile(1, i)
End If
Next i
.Cells(iZeile, SpaltePLZ).NumberFormat = "00000"
End With
With ListBox1
For i = 1 To UBound(arrZeile, 2)
.List(.ListIndex, i) = arrZeile(1, i)
.ListIndex = -1
.ListIndex = iIndex
Next i
End With
'Schreibschutz = False
End If
End Sub


Gruß Uwe
Anzeige
AW: intelligente Tabelle VBA Code für Maske Dateneingabe
06.10.2024 09:29:29
Peter
Guten Morgen Uwe
Jetzt ist alles dank Deiner sehr guten Arbeit perfekt.
Du hast mir wirklich sehr geholfen!!

Viele liebe Grüße Peter

;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige