現在とある学生として簿記と情報処理を勉強している人がタイムレコーダーと簡易家計簿を構築してみました。初めての投稿なのでご容赦くださいw
構築の手順
①機能の実装
タイムレコーダ
・出勤時間記録・退勤時間記録
・休暇機能
・時給計算機能
・グラフ機能←今回実装せず
・集計機能
簡易家計簿
・現金~その他勘定までの入力(・収入・費用 を分ける)・総資産の記録
・取り消し機能
・口座残高機能
・T勘定とグラフの表示←今回実装せず
・集計機能
②タイムレコーダーの構築
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/238522/f10630f3-6d76-1080-85d1-c072b65966a2.png)出勤日にはtoday()関数を利用しています。
=today()
・出勤・退勤を押すと隣のデータベース(Excelのセルに書き込みを行います)
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
=ADDRESS(MATCH(J5,A:A,0),MATCH(J4,2:2,0),1)
=VALUE(RIGHT(L34,2))
現在は(RIGHT(L2,2))2になっているがこれから先値が大きくなるとここがエラーを吐くのでこれからif文をつかってコードの変更が必要になる。
・休暇コード・集計表もおんなじように構築をしている。
コードだけ載せておきます。
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みたいな書き方をしています。
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
こんな感じでコードを書いています。
③簡易家計簿構築
基本的にはタイムレコーダ機能と同じような書き方でエクセルの関数は動いています。
=日付!B8224
基本的に口座残高も同じような感じで構築しています。
ちなみにここの・外観・機能は
最も入力が簡単な無料家計簿・家計簿アプリ[ドクターウォレット]
ここのサイトを参考に作らせていただきました。
ありがとうございました。
一応コードだけ載せさせていただきます。
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
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で動くようにクローンしていく予定です。何か改善点やアドバイス、等々あればコメントでお願いします。
ではありがとうございました。
このコード、システムを使ってのエラー等々の責任は自己責任でお願いします
このシステムを作るうえで参考にさせてもらったサイト等々のみなさんありがとうございました。