Hey,
also zu erst zu dem was für ein Programm es überhaupt werden soll, dann komm ich zu meinem Problem.
Programm:
Ein Gleitzeitberechner, der nach Angaben der Uhrzeit automatisch ausrechnet, wie lange derjenige, laut 41h-regel, zu bleiben hat. D.h Ausgabe der Uhrzeit-gehen, darf in x h gehen, war schon x h hier...Diese wiederum sollen in eine Excel Datei gespeichert werden.Eine ini datei kommt nicht in frage, da man dort immer nur einen Key abspeichern könnte, txt datei kommt auch nicht in Frage, da diese zu unübersichtlich sind, und ich die einzelnen Felder ansprechen möchte, und nicht jedesmal bis zum gewünschten Punkt suchen möchte, eine Datenbank wäre noch möglich, wage ich mich aber noch nicht ran, da ich erst seit 1 Woche in Visual Basic programmiere, un sowieso erstmal mit dem Rest klar kommen muss. Somit bleibt nur noch eine Excel Tabelle (soweit ich das weiß), die recht einfach ansprechbar usw. ist.
Später werden diese Daten gespeichert und in einem ÜbersichtsFormular angezeigt, für die jeweilige Woche, dies wird dann noch Jahresweise am schluß ausgegeben, soweit bin ich aber noch nicht...und noch ein paar andere Dinge, sollten aber für den moment irrelevant sein
Nun zu dem Problem,
habe bisher das Formular fertig gestellt, wo man die Zeit eingeben kann + der Ausgabe der Zeiten, zudem befinden sich comboBoxen da, wo man die Tageszeiten angeben kann, so weit ok, diese werden auch in der Excel datei abgespeichert, das Problem ist aber, bei der Ausgabe das diese nicht in der Date Form ausgegeben werden, sondern anscheinend mit einem Falschen Typ übergeben werden. Des weiteren habe ich das Problem, das wenn ich 2x innerhalb eines durchganges, die Datei speichern möchte, die Laufzeitfehlermeldung 91 (Objektvariable oder With-Blockvariable nicht festgelegt) aufkommt.
frmbearbeiten
Modul
Bedanke mich jetzt schon mal für eure Freundliche Unterstützung
Mfg
Alexander
also zu erst zu dem was für ein Programm es überhaupt werden soll, dann komm ich zu meinem Problem.
Programm:
Ein Gleitzeitberechner, der nach Angaben der Uhrzeit automatisch ausrechnet, wie lange derjenige, laut 41h-regel, zu bleiben hat. D.h Ausgabe der Uhrzeit-gehen, darf in x h gehen, war schon x h hier...Diese wiederum sollen in eine Excel Datei gespeichert werden.Eine ini datei kommt nicht in frage, da man dort immer nur einen Key abspeichern könnte, txt datei kommt auch nicht in Frage, da diese zu unübersichtlich sind, und ich die einzelnen Felder ansprechen möchte, und nicht jedesmal bis zum gewünschten Punkt suchen möchte, eine Datenbank wäre noch möglich, wage ich mich aber noch nicht ran, da ich erst seit 1 Woche in Visual Basic programmiere, un sowieso erstmal mit dem Rest klar kommen muss. Somit bleibt nur noch eine Excel Tabelle (soweit ich das weiß), die recht einfach ansprechbar usw. ist.
Später werden diese Daten gespeichert und in einem ÜbersichtsFormular angezeigt, für die jeweilige Woche, dies wird dann noch Jahresweise am schluß ausgegeben, soweit bin ich aber noch nicht...und noch ein paar andere Dinge, sollten aber für den moment irrelevant sein
Nun zu dem Problem,
habe bisher das Formular fertig gestellt, wo man die Zeit eingeben kann + der Ausgabe der Zeiten, zudem befinden sich comboBoxen da, wo man die Tageszeiten angeben kann, so weit ok, diese werden auch in der Excel datei abgespeichert, das Problem ist aber, bei der Ausgabe das diese nicht in der Date Form ausgegeben werden, sondern anscheinend mit einem Falschen Typ übergeben werden. Des weiteren habe ich das Problem, das wenn ich 2x innerhalb eines durchganges, die Datei speichern möchte, die Laufzeitfehlermeldung 91 (Objektvariable oder With-Blockvariable nicht festgelegt) aufkommt.
frmbearbeiten
Code:
Option Explicit
Private Sub cmdcalc_Click()
ausfuehren 'Zeit berechnen & Ausgabe
End Sub
Private Sub cmdopen_Click()
Call OpenExlWSOpen(App.Path & "\Database.xls", "Tabelle1") 'Exceldatei Database.xls @ sheet Tabelle1 öffnen zum schreiben
End Sub
Private Sub cmdSave_Click()
Call OpenExlWSSave(App.Path & "\Database.xls", "Tabelle1") 'Exceldatei Database.xls @ sheet Tabelle1 speichern
End Sub
Private Sub Form_Load()
txtEingabeKommen.Text = Format(Time, "hh:mm") 'aktuelle Zeit als standart festlegen
End Sub
Modul
Code:
Option Explicit
'Variablendeklaration
Private oExl As New Excel.Application
Public ddate As Date
Public MFday As Date
Public MFdayda As Date
Public MFdaybleiben As Date
Public MDday As Date
Public MDdayda As Date
Public MDdaybleiben As Date
Public Pause As Date
Public Zeit As Date
Public status01 As Integer
Public status02 As Integer
Public iKanalNr As Integer
Public Sub OpenExlWSSave(ByVal sWSName As String, ByVal sTabName As String)
Dim Zeile As Long, Spalte As Integer
Zeile = 7 'werden später durch eine Schleife geändert, mom statisch
Spalte = 1
' Workbook öffnen
oExl.Workbooks.Open sWSName
' Tabelle selektieren:
'-----------------------------------------------------------------------------------
'Fehlermeldung 91
ActiveWorkbook.Sheets(sTabName).Select
'Fehlermeldung 91
'-----------------------------------------------------------------------------------
' Zelle schreiben
Spalte = 1
ActiveSheet.Cells(Zeile, Spalte).Value = frmbearbeiten.cbTag.Text
Spalte = 2
ActiveSheet.Cells(Zeile, Spalte).Value = frmbearbeiten.cbDateTag.Text
Spalte = 3
ActiveSheet.Cells(Zeile, Spalte).Value = frmbearbeiten.cbDateMonat.Text
Spalte = 4
ActiveSheet.Cells(Zeile, Spalte).Value = frmbearbeiten.lblKommen.Caption
Spalte = 5
ActiveSheet.Cells(Zeile, Spalte).Value = frmbearbeiten.lblgehen.Caption
' alles schließen
Call ActiveWorkbook.Close(True)
Excel.Workbooks.Close
End Sub
Public Sub OpenExlWSOpen(ByVal sWSName As String, ByVal sTabName As String)
Dim Zeile As Long, Spalte As Integer
Zeile = 7 'werden später durch eine Schleife geändert, mom statisch
Spalte = 1
' Workbook öffnen
oExl.Workbooks.Open sWSName
' Tabelle selektieren:
ActiveWorkbook.Sheets(sTabName).Select
' Zelle lesen
Spalte = 1
frmbearbeiten.cbTag.Text = ActiveSheet.Cells(Zeile, Spalte).Value
Spalte = 2
frmbearbeiten.cbDateTag.Text = ActiveSheet.Cells(Zeile, Spalte).Value
Spalte = 3
frmbearbeiten.cbDateMonat.Text = ActiveSheet.Cells(Zeile, Spalte).Value
Spalte = 4
frmbearbeiten.lblKommen.Caption = ActiveSheet.Cells(Zeile, Spalte).Value
Spalte = 5
frmbearbeiten.lblgehen.Caption = ActiveSheet.Cells(Zeile, Spalte).Value
' alles schließen
Call ActiveWorkbook.Close(True)
oExl.Quit
Set oExl = Nothing
End Sub
Public Sub ausfuehren()
Pause = "00:30"
ddate = frmbearbeiten.txtEingabeKommen.Text
'Abfrage ob txtEingabeGehen, was eingetragen wurde
If Not frmbearbeiten.txtEingabeGehen.Text = "txtEingabeGehen" Then
Zeit = frmbearbeiten.txtEingabeGehen.Text
MDday = frmbearbeiten.txtEingabeGehen.Text
MFday = frmbearbeiten.txtEingabeGehen.Text
Else
Zeit = Time
MDday = ddate + "08:30" + Pause
MFday = ddate + "08:00" + Pause
End If
'Berechnungen
MDdaybleiben = MDday + "00:01" - Time
MDdayda = Time - ddate
MFdaybleiben = MFday + "00:01" - Time
MFdayda = Time - ddate
' Überprüfen welcher Tag ist, für spätere Formulare
Select Case frmbearbeiten.cbTag.ListIndex
Case 0
status01 = 1
Case 1
status01 = 2
Case 2
status01 = 3
Case 3
status01 = 4
Case 4
status01 = 5
End Select
'Abfrage ob Mo-Die oder Mi-Fr, dann Ausgabe
frmbearbeiten.lblKommen.Caption = Format(ddate, "hh:mm")
If frmbearbeiten.cbTag.ListIndex > 1 Then
frmbearbeiten.lblgehen.Caption = Format(MFday, "hh:mm")
frmbearbeiten.lblhbleiben.Caption = Format(MFdaybleiben, "hh:mm")
frmbearbeiten.lblhda.Caption = Format(MFdayda, "hh:mm")
status02 = 1
Else
frmbearbeiten.lblgehen.Caption = Format(MDday, "hh:mm")
frmbearbeiten.lblhbleiben.Caption = Format(MDdaybleiben, "hh:mm")
frmbearbeiten.lblhda.Caption = Format(MDdayda, "hh:mm")
status02 = 2
End If
End Sub
Bedanke mich jetzt schon mal für eure Freundliche Unterstützung
Mfg
Alexander