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

<p>
現在とある学生として簿記と情報処理を勉強している人がタイムレコーダーと簡易家計簿を構築してみました。初めての投稿なのでご容赦くださいｗ</p>
<h1>構築の手順</h1>
<h1>①機能の実装</h1>
<h2>タイムレコーダ</h2>
・出勤時間記録<br>
・退勤時間記録<br>
・休暇機能<br>
・時給計算機能<br>
・グラフ機能←今回実装せず<br>
・集計機能
<h2>簡易家計簿</h2>
・現金~その他勘定までの入力（・収入・費用　を分ける）<br>
・総資産の記録<br>
・取り消し機能<br>
・口座残高機能<br>
・Ｔ勘定とグラフの表示←今回実装せず<br>
・集計機能<br>

<h1>②タイムレコーダーの構築</h1>
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/238522/f10630f3-6d76-1080-85d1-c072b65966a2.png)

出勤日にはtoday()関数を利用しています。
```出勤日
=today()
```
タイムカードを押すと
![タイムレコーダ.jpg](https://qiita-image-store.s3.amazonaws.com/0/238522/09a314bc-76fa-1515-4d0e-d33bfde1e013.jpeg)

・出勤・退勤を押すと隣のデータベース（Ｅｘｃｅｌのセルに書き込みを行います）

```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))２になっているがこれから先値が大きくなるとここがエラーを吐くのでこれから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

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

<h1>③簡易家計簿構築</h1>

![無題1.png](https://qiita-image-store.s3.amazonaws.com/0/238522/78608c09-5f48-6487-5de6-e6bde67660f4.png)
![無題3.png](https://qiita-image-store.s3.amazonaws.com/0/238522/6d41706a-4bad-9881-4802-db2c1428a4de.png)

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

```総資産
=日付!B8224
```
基本的に口座残高も同じような感じで構築しています。

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

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

```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で動くようにクローンしていく予定です。何か改善点やアドバイス、等々あればコメントでお願いします。
ではありがとうございました。

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