Anzeige
Archiv - Navigation
940to944
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
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige