Excel VBA 質問スレッド №2055 (解決済)

勤務表

投稿者 : たま(初心者)     投稿日時 : 2024/11/29(Fri) 10:12:14     OS : Windows 11     EXCEL : Office 365
Excelで、A列に職員名、B列に職員区分(正職、準職員、パート)、C列からAG列(1日~31日)に勤務記号(A,B、C、有休)を入力

職員10名で、行は2行目から11行目を使用


のような簡易な予定勤務表を作った場合に


後日、コントロールボタンにVBAを書き込み

「正職」と「準職員」のみの「有休」を数字の数字の「8」に変換し、さらに変更したセルの色を黄色に変更するような方法があればご指導お願いいたします

スポンサーリンク
[返信 1] Re : 勤務表
投稿者 : ピロリ     投稿日時 : 2024/11/29(Fri) 14:03:12
■[質問] たま(初心者)さん(2024-11-29 10:12:14)の記事
> 「正職」と「準職員」のみの「有休」を数字の数字の「8」に変換し、さらに変更したセルの色を黄色に変更するような方法があれば・・・
下のような方法で、実現できると思います。
(1) 2行目~11行目までループする。(Forループ)
(2) B列の職員区分が「正職」か「準職員」なら、(If判定)
(3) その行の C列目~AG列目までループする。(Forループ)
(4) その日(セルの値)が「有休」なら、(If判定)
(5) セルの値を「8」へ書き換える。(値の代入)
(6) セルの色を黄色へ変更する。(セルの塗り潰し)

[返信 2] Re : 勤務表
投稿者 : たま(初心者)     投稿日時 : 2024/11/29(Fri) 15:21:54
■[質問] たま(初心者)さん(2024-11-29 10:12:14)の記事
> Excelで、A列に職員名、B列に職員区分(正職、準職員、パート)、C列からAG列(1日~31日)に勤務記号(A,B、C、有休)を入力

> 職員10名で、行は2行目から11行目を使用


> のような簡易な予定勤務表を作った場合に


> 後日、コントロールボタンにVBAを書き込み

> 「正職」と「準職員」のみの「有休」を数字の数字の「8」に変換し、さらに変更したセルの色を黄色に変更するような方法があればご指導お願いいたします


ご回答ありがとうございます。

上記のようにプログラムを書き込めばというところまでは想像がつくのですが、かじりたてのため、具体的にどのようにプログラムを書き込むかがまだ理解できません。

具体的なプログラムの書き込み方をご指導いただけると助かります

[返信 3] Re : 勤務表
投稿者 : ピロリ     投稿日時 : 2024/11/29(Fri) 17:04:56
■[返信 2] たま(初心者)さん(2024-11-29 15:21:54)の記事
> 具体的なプログラムの書き込み方をご指導いただけると助かります
プログラムコードの書き方(どこで何をするのか)が分からないということですか?
例えば Forループの場合のステートメント(構文)が分からないということですか?
前者でしたら、このサイトの「基礎編」でお勉強されると良いでしょう。分かり易く書かれてると思います。
後者でしたら、[返信 1]へ ( )書きでキーワードを記載しておいたので、<vba Forループ> のように先頭へ「vba 」を付けて
検索すると良いです。参考になる説明やコードが見付かると思いますよ。「行き詰ったら <vba ○○○○> で検索」です。

[返信 4] Re : 勤務表
投稿者 : たま(初心者)     投稿日時 : 2024/11/29(Fri) 18:09:46
■[返信 3] ピロリさん(2024-11-29 17:04:56)の記事
> ■[返信 2] たま(初心者)さん(2024-11-29 15:21:54)の記事
> > 具体的なプログラムの書き込み方をご指導いただけると助かります
> プログラムコードの書き方(どこで何をするのか)が分からないということですか?
> 例えば Forループの場合のステートメント(構文)が分からないということですか?
> 前者でしたら、このサイトの「基礎編」でお勉強されると良いでしょう。分かり易く書かれてると思います。
> 後者でしたら、[返信 1]へ ( )書きでキーワードを記載しておいたので、<vba Forループ> のように先頭へ「vba 」を付けて
> 検索すると良いです。参考になる説明やコードが見付かると思いますよ。「行き詰ったら <vba ○○○○> で検索」です。

私の現在の知識では、ピロリさんからご指導いただいている部分では、(2)まではなんとなくわかるレベルです

Private Sub CommandButton1_Click()
    For i = 3 To Cells(3, 2).End(xlDown).row
    If Cells(i, 2).Value = "正社員" Then
            ●●●●●●●
        ElseIf Cells(i, 2).Value = "準職員(フルタイム)" Then
            ●●●●●●●
        Else
            ●●●●●●●
        End If
    Next
 End Sub

(1)、(2)すらピロリさんからしたら間違っているかもしれません。(3)以降少しでもご指導いただければ助かります。

[返信 5] Re : 勤務表
投稿者 : ピロリ     投稿日時 : 2024/11/29(Fri) 18:52:00
「正社員」とか新しい文言が出てきていますが、[返信 1]の(1)~(6)のままで良いなら、下の通りです。
後は、アレンジしてみて、トライ&エラーすると良いでしょう。
不明点は、<vba ○○○○> で検索して下さい。

Private Sub CommandButton1_Click()
    Dim i As Long
    Dim j As Long
    
    For i = 2 To 11                                             '(1) 2行目~11行目までループ
        If Cells(i, 2) = "正職" Or Cells(i, 2) = "準職員" Then  '(2) B列が「正職」か「準職員」なら、
            For j = 3 To 33                                     '(3) C列目~AG列目までループ
                If Cells(i, j) = "有休" Then                    '(4) セルの値が「有休」なら、
                    Cells(i, j) = 8                             '(5) セルの値を「8」へ書き換える
                    Cells(i, j).Interior.Color = vbYellow       '(6) セルの色を黄色へ変更
                End If
            Next j
        End If
    Next i
End Sub

[返信 6] Re : 勤務表
投稿者 : たま(初心者)     投稿日時 : 2024/11/29(Fri) 18:59:35
■[返信 5] ピロリさん(2024-11-29 18:52:00)の記事
> 「正社員」とか新しい文言が出てきていますが、[返信 1]の(1)~(6)のままで良いなら、下の通りです。
> 後は、アレンジしてみて、トライ&エラーすると良いでしょう。
> 不明点は、<vba ○○○○> で検索して下さい。

> Private Sub CommandButton1_Click()
> Dim i As Long
> Dim j As Long

> For i = 2 To 11 '(1) 2行目~11行目までループ
> If Cells(i, 2) = "正職" Or Cells(i, 2) = "準職員" Then '(2) B列が「正職」か「準職員」なら、
> For j = 3 To 33 '(3) C列目~AG列目までループ
> If Cells(i, j) = "有休" Then '(4) セルの値が「有休」なら、
> Cells(i, j) = 8 '(5) セルの値を「8」へ書き換える
> Cells(i, j).Interior.Color = vbYellow '(6) セルの色を黄色へ変更
> End If
> Next j
> End If
> Next i
> End Sub


ご丁寧にご指導ありがとうございました。参考になりました。

[返信 7] Re : 勤務表
投稿者 : てらてら     投稿日時 : 2024/11/29(Fri) 19:15:41
こんにちは。

終了しているようですが、以下のページで同じような事をしてます。

https://help-vba.com/work-plan1/

[返信 8] Re : 勤務表
投稿者 : たま(初心者)     投稿日時 : 2024/11/30(Sat) 01:42:14
■[返信 7] てらてらさん(2024-11-29 19:15:41)の記事
> こんにちは。

> 終了しているようですが、以下のページで同じような事をしてます。

> https://help-vba.com/work-plan1/


ありがとうございます!参考にさせていただきます!!

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2024-12-07 22:39:58 )
タイトルとURLをコピーしました