LoginSignup
1
1

More than 5 years have passed since last update.

・タイムレコーダー・簡易家計簿の構築を行う

Posted at

現在とある学生として簿記と情報処理を勉強している人がタイムレコーダーと簡易家計簿を構築してみました。初めての投稿なのでご容赦くださいw

構築の手順

①機能の実装

タイムレコーダ

・出勤時間記録

・退勤時間記録

・休暇機能

・時給計算機能

・グラフ機能←今回実装せず

・集計機能

簡易家計簿


・現金~その他勘定までの入力(・収入・費用 を分ける)

・総資産の記録

・取り消し機能

・口座残高機能

・T勘定とグラフの表示←今回実装せず

・集計機能

②タイムレコーダーの構築

無題.png

出勤日にはtoday()関数を利用しています。
出勤日
=today()

タイムカードを押すと
タイムレコーダ.jpg

・出勤・退勤を押すと隣のデータベース(Excelのセルに書き込みを行います)

UserForm1.vba
Private Sub CommandButton1_Click()

Dim syu As String

syu = Range("L3")

Cells(syu, 2) = Format(Time, "hh:mm:ss")

End Sub

Private Sub CommandButton2_Click()


Dim syu As String

syu = Range("L3")

Cells(syu, 4) = Format(Time, "hh:mm:ss")



End Sub

Private Sub CommandButton3_Click()

End





End Sub


Private Sub UserForm_Activate()
Dim myTime As Date

    myTime = Format(Time, "hh:mm:ss")

    Label1.Caption = myTime

End Sub


L3.セル
=ADDRESS(MATCH(J5,A:A,0),MATCH(J4,2:2,0),1)
L4.セル
=VALUE(RIGHT(L34,2))

現在は(RIGHT(L2,2))2になっているがこれから先値が大きくなるとここがエラーを吐くのでこれからif文をつかってコードの変更が必要になる。

・休暇コード・集計表もおんなじように構築をしている。
コードだけ載せておきます。

UserForm2.vba
Private Sub CommandButton1_Click()

Dim kilyu, bi As String

kilyu = "休暇"


syu = Range("L3")
bi = Range("J18")


Cells(syu, 2) = kilyu
Cells(syu, 4) = kilyu

Cells(syu, 9) = bi
End Sub

Private Sub CommandButton3_Click()
End
End Sub

Private Sub CommandButton4_Click()




syu = Range("L3")
bi = Range("J18")


Cells(syu, 2) = ""
Cells(syu, 4) = ""

Cells(syu, 9) = ""

End Sub


集計にはモジュールに記入しています。自分はjavaでいうところのmainみたいな書き方をしています。

module1.vba

Sub ボタン68_Click()
UserForm1.Show vbModeless
End Sub

Sub ボタン69_Click()
UserForm2.Show vbModeless
End Sub
Sub ボタン70_Click()

Dim hzi, owa As Integer
Dim susum As Integer

Dim hazime, owari As String



hazi = Range("L35")
owa = Range("L40")


susum = WorksheetFunction.Sum(Range(Cells(hazi, 8), Cells(owa, 8)))


MsgBox (susum)


    Range("L48") = susum

End Sub

Sub ボタン2_Click()
UserForm4.Show vbModeless
End Sub
Sub ボタン3_Click()
UserForm5.Show vbModeless
End Sub

こんな感じでコードを書いています。

③簡易家計簿構築

無題1.png
無題3.png

基本的にはタイムレコーダ機能と同じような書き方でエクセルの関数は動いています。

=日付!B8224

基本的に口座残高も同じような感じで構築しています。

ちなみにここの・外観・機能は
最も入力が簡単な無料家計簿・家計簿アプリ[ドクターウォレット]
ここのサイトを参考に作らせていただきました。
ありがとうございました。

一応コードだけ載せさせていただきます。

UserForm4.vba
Private Sub CommandButton1_Click()

Dim syu, test, test1 As String


syu = Range("F15")


If Worksheets("入力フォーム").Range("B17") <> "" Or Worksheets("入力フォーム").Range("C17") <> "" Or Worksheets("入力フォーム").Range("D17") <> "" Or Worksheets("入力フォーム").Range("E17") <> "" And Worksheets("入力フォーム").Range("B18") = "" And Worksheets("入力フォーム").Range("C18") = "" And Worksheets("入力フォーム").Range("D18") = "" And Worksheets("入力フォーム").Range("E18") = "" Then

    Worksheets("日付").Cells(syu, 5) = Worksheets("入力フォーム").Range("B17") + Worksheets("日付").Cells(syu, 5)
     Worksheets("日付").Cells(syu, 6) = Worksheets("入力フォーム").Range("C17") + Worksheets("日付").Cells(syu, 6)
 Worksheets("日付").Cells(syu, 7) = Worksheets("入力フォーム").Range("D17") + Worksheets("日付").Cells(syu, 7)
   Worksheets("日付").Cells(syu, 8) = Worksheets("入力フォーム").Range("E17") + Worksheets("日付").Cells(syu, 8)

   ElseIf Worksheets("入力フォーム").Range("B17") = "" Or Worksheets("入力フォーム").Range("C17") = "" Or Worksheets("入力フォーム").Range("D17") = "" Or Worksheets("入力フォーム").Range("E17") = "" And Worksheets("入力フォーム").Range("B18") <> "" Or Worksheets("入力フォーム").Range("C18") <> "" Or Worksheets("入力フォーム").Range("D18") <> "" Or Worksheets("入力フォーム").Range("E18") <> "" Then

   Worksheets("日付").Cells(syu, 5) = Worksheets("日付").Cells(syu, 5) - Worksheets("入力フォーム").Range("B18")
    Worksheets("日付").Cells(syu, 6) = Worksheets("日付").Cells(syu, 6) - Worksheets("入力フォーム").Range("C18")
        Worksheets("日付").Cells(syu, 7) = Worksheets("日付").Cells(syu, 7) - Worksheets("入力フォーム").Range("D18")
            Worksheets("日付").Cells(syu, 8) = Worksheets("日付").Cells(syu, 8) - Worksheets("入力フォーム").Range("E18")

   Else

    Worksheets("日付").Cells(syu, 5) = Worksheets("入力フォーム").Range("B17") + Worksheets("日付").Cells(syu, 5) - Worksheets("入力フォーム").Range("B18")
        Worksheets("日付").Cells(syu, 6) = Worksheets("入力フォーム").Range("C17") + Worksheets("日付").Cells(syu, 6) - Worksheets("入力フォーム").Range("C18")
            Worksheets("日付").Cells(syu, 7) = Worksheets("入力フォーム").Range("D17") + Worksheets("日付").Cells(syu, 7) - Worksheets("入力フォーム").Range("D18")
                Worksheets("日付").Cells(syu, 8) = Worksheets("入力フォーム").Range("E17") + Worksheets("日付").Cells(syu, 8) - Worksheets("入力フォーム").Range("E18")



End If


   test = Worksheets("日付").Cells(syu, 3)

   Worksheets("日付").Cells(syu, 3) = test + Worksheets("入力フォーム").Range("B17") '収益

   test1 = Worksheets("日付").Cells(syu, 4)


   Worksheets("日付").Cells(syu, 4) = test + Worksheets("入力フォーム").Range("C17") '費用




End Sub


Private Sub CommandButton2_Click()
End
End Sub


UserForm5.vba
Private Sub CommandButton1_Click()
syu = Range("F15")

Worksheets("日付").Cells(syu, 5) = ""
Worksheets("日付").Cells(syu, 6) = ""
Worksheets("日付").Cells(syu, 7) = ""
Worksheets("日付").Cells(syu, 8) = ""

Range("B17") = ""
Range("C17") = ""
Range("D17") = ""
Range("E17") = ""

Range("B18") = ""
Range("C18") = ""
Range("D18") = ""
Range("E18") = ""


End Sub

Private Sub CommandButton2_Click()
End
End Sub



今回は以上になります。お粗末なコードそして関数を失礼いたしました。
今後はグラフ機能や帳簿機能を充実させwebで動くようにクローンしていく予定です。何か改善点やアドバイス、等々あればコメントでお願いします。
ではありがとうございました。

このコード、システムを使ってのエラー等々の責任は自己責任でお願いします
このシステムを作るうえで参考にさせてもらったサイト等々のみなさんありがとうございました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1