Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1476to1480
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
Inhaltsverzeichnis

VBA User form

VBA User form
26.02.2016 21:02:15
Maria

Hallo zusammen,
Ich möchte gerne in meiner User Form die eingegebenen Daten in einer anderen Liste abspeichern.
https://www.herber.de/bbs/user/103915.xlsm
Daum und Uhrzeit soll gleich kommen bei starten des User Form.
Jetzt gebe ich Mitarbeiter früh und spät und krank ein. Dann gehe ich auf speichern.
https://www.herber.de/bbs/user/103916.xlsm
Diese Datei befindet sich unter : C:\Users\Jürschen\Desktop\Mitarbeiterzusammenfassung.xlsm
Diese Datei soll aber nicht geöffnet bleiben.
Die eingegebene Daten muss unter dem verweilen Datum ( Usereingabe) stehen.
Wäre so was möglich.
Danke an alle
LG Maria

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA User form
27.02.2016 15:55:34
Maria
Hallo zusammen,
habe ich zu kompliziert geschrieben?
LG Maria

AW: VBA User form
27.02.2016 17:30:28
Crazy
Hallo Maria
welche Datei soll denn die Datei mit der Userform werden?
die leere Datei oder die mit der Tabelle in Tabelle1?
steht das Datum schon immer in der ersten Zeile drin oder soll es erst
mit dem Speicherbutton in die Tabelle eingetragen werden?
hast du 3 Mitarbeiter von denen immer einer auf Früh, einer auf Spät kommt?
und der dritte ist immer krank?
MfG Tom

AW: VBA User form
27.02.2016 18:41:27
Maria
Hallo Tom
welche Datei soll denn die Datei mit der Userform werden?
die leere Datei oder die mit der Tabelle in Tabelle1?

Die erste Userform startet beim öffnen der Datei.
Diese Datei heißt TäglicherEintag.xslm
steht das Datum schon immer in der ersten Zeile drin oder soll es erst
Ja,das Datum steht immer in der ersten Zeile. Das Datum habe ich vorher schon vorbereitet

mit dem Speicherbutton in die Tabelle eingetragen werden?

Ja, sobald man auf Speichern geht, sollen die eingegebene Werte in die Tabelle eingeben#
hast du 3 Mitarbeiter von denen immer einer auf Früh, einer auf Spät kommt?
und der dritte ist immer krank?

Es soll so funktionieren: Wir geben die Anzahl der Mitarbeiter früh und/oder spät ein, und wenn jemand krank ist.
Ich möchte in der Tabelle wo es gespeichert wird (C:\Users\Jürschen\Desktop\Mitarbeiterzusammenfassung.xlsm )
,eine Art Protokoll haben, die ich am Ende des jahre auswerte. Wieviele Kank , wie viele Mitarbeiter früh und spät waren.
Also dann so:
Mein Kollege macht die Datei TäglicherEintag.xslm auf.
Dann kommt gleich das Userform. Dann geben die das Datum, Zeit, Mitarbeiter frü und / oder Mitarbeiter spät ein.Dann evtl. krank.
Danach gehen die auf Speichern und alle Daten sind dann in der Datei:
(C:\Users\Jürschen\Desktop\Mitarbeiterzusammenfassung.xlsm )
drin unter dem Datum.
Sollte er in der erste Zeile das Datum nicht finden, soll die Meldung kommen " Datum falsch eingegeben").
Ich hoffe ich habe es gut beschrieben ,das du mir helfen kannst.
Danke nochmal
LG Maria

Anzeige
AW: Bilder zum verstehen
27.02.2016 19:50:13
Crazy
Hallo Maria
ins Modul "DieseArbeitsmappe"
Option Explicit
Private Sub Workbook_Open()
UserForm1.Show
End Sub

und das gehört hinter die Userform
Option Explicit
Private Sub Cmd_datum_holen_Click()
TextBox1.Value = Date
End Sub
Private Sub Cmd_Speichern_Click()
Dim rngZiel As Range
Dim rngBereich As Range
Dim i As Integer
Dim datDatum As Date
datDatum = CDate(TextBox1.Value)
'    Workbooks.Open Filename:="C:\Users\Tom\Desktop\Mitarbeiterzusammenfassung.xlsm"
Workbooks.Open Filename:="C:\Users\Jürschen\Desktop\Mitarbeiterzusammenfassung.xlsm"
With Workbooks("Mitarbeiterzusammenfassung.xlsm").Sheets("Tabelle1")
Set rngBereich = .Range("B1:NC1")
Set rngZiel = rngBereich.Find(datDatum, LookIn:=xlValues, lookat:=xlWhole)
If Not rngZiel Is Nothing Then
.Cells(2, rngZiel.Column).Value = TextBox2.Value
.Cells(3, rngZiel.Column).Value = TextBox3.Value
.Cells(4, rngZiel.Column).Value = Format(CDate(TextBox4.Value), "hh:mm")
.Cells(5, rngZiel.Column).Value = TextBox5.Value
Else
MsgBox "falsches Datum"
Workbooks("Mitarbeiterzusammenfassung.xlsm").Close
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
End With
With Workbooks("Mitarbeiterzusammenfassung.xlsm")
.Save
.Close
End With
For i = 1 To 5
Controls("Textbox" & i).Value = ""
Next
End Sub
Private Sub Cmd_zeit_holen_Click()
TextBox4.Value = Format(Now, "hh:mm")
End Sub
Private Sub UserForm_Initialize()
TextBox1.Value = Date
TextBox4.Value = Format(Now, "hh:mm")
End Sub

wegen der .Find-Methode ist es aber zwingend notwendig,
dass das Datum in der Tabelle in dieser Form 27.02.2016 vorliegt
MfG Tom

Anzeige
AW: Bilder zum verstehen
27.02.2016 19:56:34
Crazy
Hallo Maria
da muss allerdings noch der Tabellenname angepasst werden
bei mir war es Tabelle1
habe erst später gesehen, dass dein Zielblatt Auswertung heißt
MfG Tom

AW: Bilder zum verstehen
27.02.2016 20:31:07
Maria
Hallo Tom,
oh man Danke dir.
Nur noch eins. Wir müssen dieses Programm zweimal am Tag machen.
das heißt früh und spät.
Jetzt wenn ich heute früh die Daten für die Frühschicht eingebe sind die Daten drin.
Wenn ich aber die Daten in der Spät schicht mit eingebe, werden die Daten in der früh schicht gelöscht.
Also z.B
gebe ich Früh ein:
Datum
Zeit
Mitarbeiter Früh
Krank
Speichern.
In der Spät Schicht gebe ich nur ein
Datum
Zeit
Mitarbeiter Spät
Krank
Speichern.
Jetzt darf das Programm die Uhrzeit, Krank überschreiben.
Aber wichtig ist, das die Mitarbeiter früh drin bleibt in der Liste.
Weil der Mitarbeiter in der Spätschicht, weiß nicht wie viele Mitarbeiter in der Frühschicht war.
Verstehst du das?
DANKE nochmal für ALLES.
LG MAria

Anzeige
AW: Bilder zum verstehen
27.02.2016 20:42:44
Crazy
Hallo Maria
so wird die Frühschicht nur eingetragen wenn in der TextBox was drin steht
Private Sub Cmd_Speichern_Click()
Dim rngZiel As Range
Dim rngBereich As Range
Dim i As Integer
Dim datDatum As Date
datDatum = CDate(TextBox1.Value)
'    Workbooks.Open Filename:="C:\Users\Tom\Desktop\Mitarbeiterzusammenfassung.xlsm"
Workbooks.Open Filename:="C:\Users\Jürschen\Desktop\Mitarbeiterzusammenfassung.xlsm"
With Workbooks("Mitarbeiterzusammenfassung.xlsm").Sheets("Auswertung")
Set rngBereich = .Range("B1:NC1")
Set rngZiel = rngBereich.Find(datDatum, LookIn:=xlValues, lookat:=xlWhole)
If Not rngZiel Is Nothing Then
If TextBox2.Value  "" Then
.Cells(2, rngZiel.Column).Value = TextBox2.Value
End If
.Cells(3, rngZiel.Column).Value = TextBox3.Value
.Cells(4, rngZiel.Column).Value = Format(CDate(TextBox4.Value), "hh:mm")
.Cells(5, rngZiel.Column).Value = TextBox5.Value
Else
MsgBox "falsches Datum"
Workbooks("Mitarbeiterzusammenfassung.xlsm").Close
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
End With
With Workbooks("Mitarbeiterzusammenfassung.xlsm")
.Save
.Close
End With
For i = 1 To 5
Controls("Textbox" & i).Value = ""
Next
End Sub

MfG Tom

Anzeige
AW: Bilder zum verstehen
27.02.2016 20:49:13
Maria
Ah super Tom,
noch eins dann nerve ich dich nimmer :-)
Kann man noch einfügen, das man es nicht sieht, das die andere Tabelle geöffnet wird ?
Denn man sieht für 2 Sekunden die Datei.
Danke für alles.
LG Maria

AW: Bilder zum verstehen
27.02.2016 20:51:42
Crazy
Hallo Maria
das geht bei mir so
Private Sub Cmd_Speichern_Click()
Dim rngZiel As Range
Dim rngBereich As Range
Dim i As Integer
Dim datDatum As Date
datDatum = CDate(TextBox1.Value)
Application.ScreenUpdating = False
'    Workbooks.Open Filename:="C:\Users\Tom\Desktop\Mitarbeiterzusammenfassung.xlsm"
Workbooks.Open Filename:="C:\Users\Jürschen\Desktop\Mitarbeiterzusammenfassung.xlsm"
With Workbooks("Mitarbeiterzusammenfassung.xlsm").Sheets("Auswertung")
Set rngBereich = .Range("B1:NC1")
Set rngZiel = rngBereich.Find(datDatum, LookIn:=xlValues, lookat:=xlWhole)
If Not rngZiel Is Nothing Then
If TextBox2.Value  "" Then
.Cells(2, rngZiel.Column).Value = TextBox2.Value
End If
.Cells(3, rngZiel.Column).Value = TextBox3.Value
.Cells(4, rngZiel.Column).Value = Format(CDate(TextBox4.Value), "hh:mm")
.Cells(5, rngZiel.Column).Value = TextBox5.Value
Else
MsgBox "falsches Datum"
Workbooks("Mitarbeiterzusammenfassung.xlsm").Close
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
End With
With Workbooks("Mitarbeiterzusammenfassung.xlsm")
.Save
.Close
End With
Application.ScreenUpdating = True
For i = 1 To 5
Controls("Textbox" & i).Value = ""
Next
End Sub

MfG Tom

Anzeige
AW: Bilder zum verstehen
27.02.2016 20:58:21
Maria
ah tom,
du bist echt ein Schatz.
Danke danke danke .
Liebe Grüße Maria

AW: Bilder zum verstehen
29.02.2016 11:52:33
Maria
Hallo Tom,
ich brauche dich nocheinmal :-(
beim Code kommt ein Fehler:
Private Sub Cmd_Speichern_Click()
Dim rngZiel As Range
Dim rngBereich As Range
Dim i As Integer
Dim datDatum As Date
datDatum = CDate(TextBox2_datum.Value)
Application.ScreenUpdating = False
Workbooks.Open Filename:="L:\Transfer\Allgemein\\Mitarbeiterzusammenfassung.xlsm"
With Workbooks("Mitarbeiterzusammenfassung.xlsm").Sheets("2016")
Set rngBereich = .Range("B1:NC1")
Set rngZiel = rngBereich.Find(datDatum, LookIn:=xlValues, lookat:=xlWhole)
If Not rngZiel Is Nothing Then
.Cells(2, rngZiel.Column).Value = TextBox1_user.Value
.Cells(3, rngZiel.Column).Value = TextBox4_st.Value
.Cells(4, rngZiel.Column).Value = Format(CDate(TextBox3_zeit.Value), "hh:mm")
.Cells(5, rngZiel.Column).Value = TextBox5_auf.Value
.Cells(6, rngZiel.Column).Value = TextBox6_krank.Value
.Cells(7, rngZiel.Column).Value = TextBox7_urlaub.Value
.Cells(8, rngZiel.Column).Value = TextBox8_nt.Value
.Cells(9, rngZiel.Column).Value = TextBox9_nach.Value
.Cells(10, rngZiel.Column).Value = TextBox10_waren.Value
.Cells(11, rngZiel.Column).Value = TextBox11_we.Value
Else
MsgBox "falsches Datum"
Workbooks("Mitarbeiterzusammenfassung.xlsm").Close
With TextBox2_datum
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
End With
With Workbooks("Mitarbeiterzusammenfassung.xlsm")
.Save
.Close
End With
Application.ScreenUpdating = True
For i = 1 To 11
Controls("TextBox" & i).Value
Next
End Sub
Bei: For i = 1 To 11
'Controls("TextBox" & i).Value
Next
wird es Gelb. Wenn ich diesen Befehl herausnehme, dann geht das. ( was bedeutet das)
KAnn man noch einbinden, wenn die Daten übertragen sind, das dann die Meldung kommt "Daten wurden erfolgreis übergeben.
Dann auf OK und die Excel liste schließt dann.
Ich hoffe du kannst mir nochmal helfen.
Dannke
Maria

Anzeige
AW: Bilder zum verstehen
29.02.2016 12:25:25
Daniel
Hi
mit
For i = 1 To 11
Controls("TextBox" & i).Value
Next

versuchst du, alle TextBoxen von Textbox1 über Textbox2 bist Textbox11 nacheinander anzusprechen.
der Code ist aber unvollständig und damit fehlerhaft, weil er nicht angibt, was mit den Werten der einzelnen TextBoxen gemacht werden soll.
wenn die Textboxinhalte gelöscht werden sollen, müsste es so lauten:
For i = 1 To 11
Controls("TextBox" & i).Value = ""
Next

vergleiche deinen Code mal mit den Beispielcodes von Tom, er hat das ="" auch drin, daher solltest du es nicht weglassen.
Gruß Daniel

Anzeige
AW: Bilder zum verstehen
29.02.2016 12:45:04
Maria
Hallo Daniel,
ich habe es mal so eingegeben:
For i = 1 To 11
Controls("TextBox" & i).Value = ""
Next
leider kommt ein Laufzeitfehler-2147024809(80070057)

AW: Bilder zum verstehen
29.02.2016 14:47:21
Daniel
Hi
bei solchen Fehlern immer die Datei mit Hochladen.
ist denn sichergestellt, dass die benannten TextBoxen auch vorhanden sind?
Gruß Daniel

AW: Bilder zum verstehen
29.02.2016 16:48:23
Crazy
Hallo Maria
in deinem Code ist zu sehen, dass du die TextBoxen alle umbenannt hast
dann funktioniert die Schleife so nicht mehr
die Schleife ist nur zum leeren der TextBoxen wenn die Einträge gemacht wurden
also entweder die komplette Schleife löschen, dann bleiben die TextBoxen gefüllt
oder du setzt diesen Code ein
Private Sub Cmd_Speichern_Click()
Dim crt As Control
Dim rngZiel As Range
Dim rngBereich As Range
Dim i As Integer
Dim datDatum As Date
datDatum = CDate(TextBox2_datum.Value)
Application.ScreenUpdating = False
Workbooks.Open Filename:="L:\Transfer\Allgemein\\Mitarbeiterzusammenfassung.xlsm"
With Workbooks("Mitarbeiterzusammenfassung.xlsm").Sheets("2016")
Set rngBereich = .Range("B1:NC1")
Set rngZiel = rngBereich.Find(datDatum, LookIn:=xlValues, lookat:=xlWhole)
If Not rngZiel Is Nothing Then
.Cells(2, rngZiel.Column).Value = TextBox1_user.Value
.Cells(3, rngZiel.Column).Value = TextBox4_st.Value
.Cells(4, rngZiel.Column).Value = Format(CDate(TextBox3_zeit.Value), "hh:mm")
.Cells(5, rngZiel.Column).Value = TextBox5_auf.Value
.Cells(6, rngZiel.Column).Value = TextBox6_krank.Value
.Cells(7, rngZiel.Column).Value = TextBox7_urlaub.Value
.Cells(8, rngZiel.Column).Value = TextBox8_nt.Value
.Cells(9, rngZiel.Column).Value = TextBox9_nach.Value
.Cells(10, rngZiel.Column).Value = TextBox10_waren.Value
.Cells(11, rngZiel.Column).Value = TextBox11_we.Value
Else
MsgBox "falsches Datum"
Workbooks("Mitarbeiterzusammenfassung.xlsm").Close
With TextBox2_datum
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
End With
With Workbooks("Mitarbeiterzusammenfassung.xlsm")
.Save
.Close
End With
Application.ScreenUpdating = True
For Each crt In Me.Controls
Select Case TypeName(crt)
Case "Textbox"
crt.Value = ""
Case Else
End Select
Next
End Sub

MfG Tom

Anzeige
AW: Bilder zum verstehen
29.02.2016 18:04:38
Maria
Hallo Tom,
heute hatte ich noch ein Problem gehabt. Wenn ich das Datum manuell abgeändert habe, kam die Meldung : Datum nicht gefunden, obwohl das Datum in der anderen Datei drin war.
Wenn ich in der Zusammenfassung das Datum Hochform mach ( zellen Formatierung 90grad)
das das Programm dann das Datum nicht findet?
Danke dir für alles
Maris

AW: Bilder zum verstehen
29.02.2016 18:16:10
Crazy
Hallo Maria
wie ich schon in einem anderen Beitrag geschrieben habe,
muss bei der .Find-Methode das Datum genau in der Form vorliegen
auch die Ausrichtung muss dabei so bleiben genau so wie die Formatierung
MfG Tom

Anzeige
AW: Bilder zum verstehen
29.02.2016 18:33:55
Maria
ah okay Dankeschön.
Kann man noch einen Bestätigung nach der Übertragung machen. So wie "Daten wurden erfolgreich übermittelt" dann auf ok dann schließt die ganze datei.
Danke und sorry das ich so viel deiner wertvollen zeit in Anspruch genommen habe.
LG maria

AW: Bilder zum verstehen
29.02.2016 21:16:18
Crazy
Hallo Maria
ich habs noch etwas geändert
jetzt ist es egal wie das Datum in den Zellen steht
auch die senkrechte Ausrichtung wird hierbei gefunden
Private Sub Cmd_Speichern_Click()
Dim crt As Control
Dim intCol As Integer
Dim lngDatum As Long
lngDatum = CDate(TextBox2_Datum)
Application.ScreenUpdating = False
Workbooks.Open Filename:="L:\Transfer\Allgemein\\Mitarbeiterzusammenfassung.xlsm"
With Workbooks("Mitarbeiterzusammenfassung.xlsm").Sheets("2016")
If Not IsError(Application.Match(lngDatum, .Rows(1), 0)) Then
intCol = Application.Match(lngDatum, .Rows(1), 0)
.Cells(2, intCol).Value = TextBox1_User.Value
.Cells(3, intCol).Value = TextBox4_ST.Value
.Cells(4, intCol).Value = Format(CDate(TextBox3_Zeit.Value), "hh:mm")
.Cells(5, intCol).Value = TextBox5_Auf.Value
.Cells(6, intCol).Value = TextBox6_Krank.Value
.Cells(7, intCol).Value = TextBox7_Urlaub.Value
.Cells(8, intCol).Value = TextBox8_NT.Value
.Cells(9, intCol).Value = TextBox9_Nach.Value
.Cells(10, intCol).Value = TextBox10_Waren.Value
.Cells(11, intCol).Value = TextBox11_WE.Value
Else
MsgBox "falsches Datum"
Workbooks("Mitarbeiterzusammenfassung.xlsm").Close
With TextBox2_Datum
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Exit Sub
End If
End With
MsgBox "Eintragung erfolgreich"
With Workbooks("Mitarbeiterzusammenfassung.xlsm")
.Save
.Close
End With
Application.ScreenUpdating = True
For Each crt In Me.Controls
Select Case TypeName(crt)
Case "TextBox"
crt.Value = ""
Case Else
End Select
Next
End Sub

MfG Tom

super danke für alles
01.03.2016 09:19:27
Maria
.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige