Gleitzeitberechner / Problem mit Excel Dateien speichern

lexz

Erfahrenes Mitglied
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
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
 
So habe das Problem mit dem Laufzeitfehler gelöst.
Mir müsste jetzt nur noch einer sagen können, weshalb beim Auslesen der Date-Typen, diese nicht mehr richtig angezeigt werden...wird ja anscheinend von VB -> excel der Typ geändert, vermute mal float, und von Excel -> VB, gibt er mir ja die "float"-Zahl aus, jemand ne idee wie ich das am besten bewerkstelligen kann, dass dies nicht mehr passiert
 
So, da mir anscheind auch keiner helfen kann, werde ich die Dateien jetzt einfach in einer DB speichern müssen..
 
Zurück