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

Forumthread: Datenübergabe von Eingabemaske in Tabellenblatt

Datenübergabe von Eingabemaske in Tabellenblatt
11.01.2008 14:28:49
Eingabemaske
Hallo ich habe folgendes Problem,
und würd mich freuen, wenn ihr mir helfen könntet.
Und zwar habe ich in meiner Excelliste in einem Tabellenblatt "Bemerkungen", das wie folgt aussieht:
| A | B | C | D |
1 | XXXX | Datum | Anzahl | Bemerkung |
2 | =B*C | 09.01.2008 | 1 | adfadf D |
3 | =B*C | 09.01.2008 | 2 | asdfwerwer |
4 | =B*C | 10.01.2008 | 1 | qewrqwetqwe |
daneben habe ich mir eine Eingabemaske generiert, die sich auf einem anderen Tabellenblatt öffnet um in das obige Tabellenblatt täglich zwischen 1 und 6 Einträge aufzunehmen.
Nun habe ich allerdings das Problem, dass ich kaum Ahnung von VBA habe und ich mir aber sicher bin, dass ich VBA brauche um dieses Problem zu lösen.
Ich würde euch nun bitten mir die notwendigen Befehle für folgende Operation in VBA aufzulisten (eine Bsp. Grafik bekomme ich leider nicht hochgeladen - es heißt ständig falsche Dateiname oder Dateiformat ungültig, trotz *.gif oder *.jpeg)
1.) erste Leere Zeile in Tabellenblatt "Bemerkungen" suchen und die Zeilennummer in Variable "a" schreiben
2.) Daten aus "Textbox1" - die das Datum enthalten soll - im format "tt.mm.jjjj" in Tabellenblatt "Bemerkungen" in Spalte B in Zeile "a" schreiben
3.) In Spalte "C" udn Zeile "a" eine "1" eintragen
4.) Bemerkungstext aus "Textbox2" der Maske in Spalte D in Zeiile "a" von Tabellenblatt "Bemerkungen" schreiben
5.) Im Tabellenblatt "Bemerkungen" in Spalte A in Zeile "a" das Produkt aus Datum (Excel behandelt dieses ja als Dezimalwert) und Ziffer in Spalte C schreiben
Das ganze soll jeweils gemacht werden, wenn die "Textbox2" oder im folgdenden "Textbox3" bis "Textbox6" - es sollen bis zu 5 Bemerkungen übernommen werden - einen Text enthalten. Wenn Sie leer sind, dann nicht. Für jede weitere Bemerkung zwischen 1 und 5 muss die Zeile "a" ergänzt werden, sodass jede Bemerkung in die nächste Zeile geschrieben wird und es zu keinen Überschreibungen kommt.
Danke schonmal für eure Hilfe,
Gruß Manuel
p.s. Leider kann ich das file nicht hochladen, das es für meinen Arbeitgeber ist

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenübergabe von Eingabemaske in Tabellenblat
11.01.2008 14:53:00
Eingabemaske
Hallo,
in den Code der Userform. Reagiert auf Klick auf CommandButton1

Private Sub CommandButton1_Click()
Dim i As Integer
For i = 2 To 6
With Sheets("Bemerkungen").Range("B65536").End(xlUp)
If Me.Controls("TextBox" & i)  "" Then
.Offset(1, 0) = CDate(TextBox1)
.Offset(1, 1) = 1
.Offset(1, -1).FormulaR1C1 = "= rc[1]*rc[2]"
.Offset(1, 2) = Me.Controls("Textbox" & i)
End If
End With
Next i
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Datenübergabe von Eingabemaske in Tabellenblatt
11.01.2008 15:00:00
Eingabemaske
Hallo Manuel,
ich gehe davon aus, dass du in einem UserForm(ular) erfasst, dann sollte es (ungetestet) so gehen:


Public Sub Uebertragen()
Dim lZeile  As Long
Dim iIndex  As Integer
Dim iLfdNr  As Integer
   With Worksheets("Bemerkungen")
      For iIndex = 1 To 5
         If Controls("TextBox" & iIndex).Value <> "" Then
            lZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            If textbox1.Value <> "" Then
               If IsDate(textbox1.Value) Then
                  .Range("B" & lZeile).Value = Format(textbox1.Value, "dd.mm.yyyy")
                Else
                  MsgBox "In der TextBox1 steht kein Datum - Abbruch.", _
                     48, "   Hinweis für " & Application.UserName
                  Exit Sub
               End If
             Else
               MsgBox "Die TextBox1 ist leer - Abbruch.", _
                  48, "   Hinweis für " & Application.UserName
               Exit Sub
            End If
         End If
         iLfdNr = iLfdNr + 1
         .Range("A" & lZeile).Value = iLfdNr
         .Range("B" & lZeile).Value = CInt(Range("B" & lZeile).Value) * iLfdNr
         .Range("C" & lZeile).Value = 1
         .Range("D" & lZeile).Value = textbox2.Value
      Next iIndex
   End With
End Sub 


Gruß Peter

Anzeige
AW: Datenübergabe von Eingabemaske in Tabellenblatt
11.01.2008 15:02:00
Eingabemaske
Hallo Manuel,
es muss natürlich For iIndex = 2 To 6 heißen.
Gruß Peter

AW: Datenübergabe von Eingabemaske in Tabellenblatt
11.01.2008 15:18:00
Eingabemaske
Hallo Manuel,
hier meine korrigierte Version:


Public Sub Uebertragen()
Dim lZeile  As Long
Dim iIndex  As Integer
Dim iLfdNr  As Integer
   With Worksheets("Bemerkungen")
      For iIndex = 2 To 6
         If Controls("TextBox" & iIndex).Value <> "" Then
            lZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            If TextBox1.Value <> "" Then
               If IsDate(TextBox1.Value) Then
                  .Range("B" & lZeile).Value = Format(TextBox1.Value, "dd.mm.yyyy")
                Else
                  MsgBox "In der TextBox1 steht kein Datum - Abbruch.", _
                     48, "   Hinweis für " & Application.UserName
                  Exit Sub
               End If
             Else
               MsgBox "Die TextBox1 ist leer - Abbruch.", _
                  48, "   Hinweis für " & Application.UserName
               Exit Sub
            End If
            iLfdNr = iLfdNr + 1
            .Range("A" & lZeile).Value = CLng(Range("B" & lZeile).Value) * iLfdNr
            .Range("C" & lZeile).Value = 1
            .Range("D" & lZeile).Value = Controls("TextBox" & iIndex).Value
         End If
      Next iIndex
   End With
End Sub


Gruß Peter

Anzeige
AW: Datenübergabe von Eingabemaske in Tabellenblatt
14.01.2008 10:55:00
Eingabemaske
Hallo Peter,
vielen Dank schonmal für deine Hilfe, aber leider funktionieren einige Dinge mit deinem Code nicht.
1.) leider wird in die jeweilige Zeile in der Spalte A nicht das Produkt aus der fortlaufenden Nummer und dem Datum geschrieben - das Feld bleibt leer. Wo liegt hier der Fehler?
2.) bei "".Range("C" & lZeile).Value = 1"" muss es - soweit ich dies nun geändert hab - "".Range("C" & lZeile).Value = iIndex - 1"" heißen, sodass hier eine Aufzählung stattfindet
3.) Welchen Befehl muss ich am Ende einfügen, dass mir das Formular "refreshed" wird als bald ich auf Übernehmen klicke. Bisher bleiben die Daten, auch wenn Sie in die Tabelle "Bemerkungen" geschrieben wurden erhalten. Ich möchte aber u.U. zwei Tage nach einander eingeben können...
Vielen Dank schon im Voraus,
Gruß Manuel

Anzeige
AW: Datenübergabe von Eingabemaske in Tabellenblatt
14.01.2008 12:45:00
Eingabemaske
Hallo Manuel,
häng hinter End With
Me.TextBox1.value = ""
Me.TextBox2.Value = ""
dran, dann werden die Boxes geleert.
Gruß Peter

AW: Datenübergabe von Eingabemaske in Tabellenblatt
14.01.2008 13:59:48
Eingabemaske
Hallo,
funktioniert soweit, und wie bekomme ich es jetzt noch hin, dass - wenn ich einen Button "Bemerkungen für weiteren Tag aufnehmen" in mein Formular einsetze - auf befehl in meinem Datumsfeld ein Tag hinzu addiert wird? Wenn ich einfach schreibe:
Me.TextBox1.Value = TextBox1.Value + 1
erhalte ich von 13.01.2008 mit einem Klick auf Übernehmen den 13.01.2009! Es sollte aber der 14.01.2008 sein. Es findet also keine Kontrolle des Zahlenformates statt, bzw. ich kann nicht nur bei den Tagen zählen.
Gruß

Anzeige
AW: Datenübergabe von Eingabemaske in Tabellenblatt
14.01.2008 16:17:00
Eingabemaske
Hallo Manuel,
dann musst du den TextBox-Inhalt ein wenig formatieren.
Versuch es so: Me.TextBox1.Value = CDate(Me.TextBox1.Value) + 1
oder
Me.TexBox1.Value = DateSerial(Year(Me.TextBox1.Value), Month(Me.TextBox1.Value), Day(Me.TextBox1.Value) + 1)
Gruß 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
Anzeige

Infobox / Tutorial

Datenübergabe von Eingabemaske in Tabellenblatt


Schritt-für-Schritt-Anleitung

Um eine Eingabemaske in Excel zu erstellen und die Daten in eine Tabelle zu übertragen, folge diesen Schritten:

  1. Erstelle eine UserForm: Öffne den VBA-Editor (Alt + F11) und füge eine neue UserForm hinzu.

  2. Füge TextBoxen hinzu: Platziere mindestens zwei TextBoxen (TextBox1 für das Datum und TextBox2 für die Bemerkung) sowie einen CommandButton (CommandButton1), um die Daten zu übertragen.

  3. Füge folgenden VBA-Code ein:

Private Sub CommandButton1_Click()
    Dim lZeile As Long
    Dim iIndex As Integer

    With Worksheets("Bemerkungen")
        For iIndex = 2 To 6
            If Controls("TextBox" & iIndex).Value <> "" Then
                lZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                If TextBox1.Value <> "" Then
                    If IsDate(TextBox1.Value) Then
                        .Range("B" & lZeile).Value = Format(TextBox1.Value, "dd.mm.yyyy")
                    Else
                        MsgBox "In der TextBox1 steht kein Datum - Abbruch."
                        Exit Sub
                    End If
                End If
                .Range("A" & lZeile).Value = lZeile - 1  ' Fortlaufende Nummer
                .Range("C" & lZeile).Value = 1
                .Range("D" & lZeile).Value = Controls("TextBox" & iIndex).Value
            End If
        Next iIndex
    End With

    ' UserForm leeren
    Me.TextBox1.Value = ""
    Me.TextBox2.Value = ""
End Sub

In diesem Code wird die erste leere Zeile in der Tabelle „Bemerkungen“ gesucht und die eingegebenen Daten werden entsprechend übertragen.


Häufige Fehler und Lösungen

  • Problem: Das Datum wird nicht korrekt in die Tabelle geschrieben.

    • Lösung: Stelle sicher, dass das Datum im richtigen Format eingegeben wird. Verwende IsDate zur Überprüfung.
  • Problem: Die fortlaufende Nummer in Spalte A bleibt leer.

    • Lösung: Überprüfe, ob der Code für die Zeilennummerierung korrekt ist, wie im obigen Beispiel.
  • Problem: Die UserForm bleibt nach der Übertragung geöffnet.

    • Lösung: Füge am Ende des Codes Zeilen hinzu, um die TextBoxen zu leeren, damit die Eingabemaske zurückgesetzt wird.

Alternative Methoden

Wenn Du keine VBA verwenden möchtest, kannst Du auch Formeln und Datenvalidierung in Excel nutzen, um eine einfache Eingabemaske zu erstellen. Dies funktioniert jedoch nur, wenn die Eingaben nicht dynamisch wie bei einer VBA-Lösung sind.


Praktische Beispiele

Hier ein Beispiel zur Eingabemaske in Excel:

  • Erstelle ein neues Tabellenblatt mit dem Namen "Bemerkungen" und füge die Spalten A bis D hinzu.
  • Verwende die obigen Schritte, um die UserForm zu erstellen.
  • Teste die Eingabemaske, indem Du Daten eingibst und die Schaltfläche drückst.

Tipps für Profis

  • Nutze die Excel VBA Eingabemaske, um Fehler zu minimieren, indem Du Eingaben validierst.
  • Experimentiere mit der Formatierung der UserForm, um sie benutzerfreundlicher zu gestalten.
  • Überlege, zusätzliche Features hinzuzufügen, wie z. B. einen Button zum Hinzufügen eines Tages zum Datum.

FAQ: Häufige Fragen

1. Wie kann ich die Eingabemaske in Excel formatieren?
Du kannst die UserForm im VBA-Editor anpassen, indem Du Farben, Schriftarten und Layouts änderst.

2. Kann ich mehrere Eingabemasken für verschiedene Tabellen erstellen?
Ja, Du kannst mehrere UserForms erstellen und mit verschiedenen Tabellen verknüpfen, indem Du den Code entsprechend anpasst.

3. Wie kann ich sicherstellen, dass nur gültige Daten eingegeben werden?
Nutze die Funktion IsDate für Datumsfelder und setze Eingabebeschränkungen bei TextBoxen, um ungültige Eingaben zu verhindern.

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