よねさんのWordとExcelの小部屋 なんでも掲示板

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■13290 / inTopicNo.1)  NO TITLE
  
□投稿者/ まり Mail -(2018/08/03(Fri) 21:02:24)
    お世話になっております。

    よねさん、
    縦型の予定表に決まった曜日ごとに出勤または公休と自動入力をマクロでするにはどのようにしたらよいかご教示いただけませんでしょうか?
    予定表は複数人でしようするので関数では使いにくくてこまってしまいました。
    よろしくお願いいたします。
引用返信/返信 削除キー/
■13291 / inTopicNo.2)  Re[1]: カレンダー
□投稿者/ よねさん -(2018/08/04(Sat) 10:14:44)
    http://www.eurus.dti.ne.jp/~yoneyama/Excel/jituyou/gekkan-n.htm
    のようなカレンダーでしたら、B4セル以降には日付データが入っていますので、
    何曜日かを調べて、休日に該当する曜日なら C列にでも休日を入力すればよいと思います。
    月曜が休日、火曜が出勤の場合
    Sub test()
    Dim i As Long
    Range(Cells(4, 3), Cells(35, 3)).Value = ""
    For i = 4 To 35
      If Cells(i, 2).Value = "" Then Exit For
     If Weekday(Cells(i, 2).Value) = 2 Then Cells(i, 3).Value = "休日"
     If Weekday(Cells(i, 2).Value) = 3 Then Cells(i, 3).Value = "出勤"
    
    Next i
    End Sub
    

引用返信/返信 削除キー/
■13292 / inTopicNo.3)  Re[2]: カレンダー
□投稿者/ まり Mail -(2018/08/04(Sat) 13:15:48)
    こんにちは。

    予定表がつくれました。ありがとうございました。
    追加でおねがいしたいのですが、

    A列  B  C  D  ...
    月曜  火曜 水曜 木曜
    出勤  出勤 休日 休日 ...

    上記の内容でセルに入力していて
    そのセルを参照して縦型カレンダーに自動入力させたるにはどのようにしたらよいでしょうか?

    度々すみませんが宜しくお願い致します。
引用返信/返信 削除キー/
■13293 / inTopicNo.4)  Re[3]: カレンダー
□投稿者/ よねさん -(2018/08/04(Sat) 16:15:23)
    Sheet2に以下のように入力してあるとします。
    2行目にはWeekdayで返される値を入力するものとします。
    月曜日は2、火曜日は3、水曜日は4・・・といった感じです。
    
    	A	B	C	D
    1	月曜	火曜	水曜	木曜
    2	2	3	4	5
    3	出勤	出勤	休日	休日
    
    
    カレンダーはSheet1のB4以降に日付データが入力してあるとします。
    
    Sub test()
    Dim i As Long
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Set sh1 = Worksheets("Sheet1")
    Set sh2 = Worksheets("Sheet2")
    
        With sh1
         .Range(.Cells(4, 3), .Cells(35, 3)).Value = ""
            For i = 4 To 35
                If .Cells(i, 2).Value = "" Then Exit For
                If Weekday(.Cells(i, 2).Value) = sh2.Cells(2, 1).Value Then Cells(i, 3).Value = sh2.Cells(3, 1).Value
                If Weekday(.Cells(i, 2).Value) = sh2.Cells(2, 2).Value Then Cells(i, 3).Value = sh2.Cells(3, 2).Value
                If Weekday(.Cells(i, 2).Value) = sh2.Cells(2, 3).Value Then Cells(i, 3).Value = sh2.Cells(3, 3).Value
                If Weekday(.Cells(i, 2).Value) = sh2.Cells(2, 4).Value Then Cells(i, 3).Value = sh2.Cells(3, 4).Value
            
            Next i
        End With
    End Sub
    

引用返信/返信 削除キー/
■13294 / inTopicNo.5)  Re[4]: カレンダー
□投稿者/ まり Mail -(2018/08/04(Sat) 20:44:57)
    よねさん、
    ありがとうございます。
    おかげでみんなで共有しながら使えます。
    大変助かりました。
    いつも本当にありがとうございます。
引用返信/返信 削除キー/
■13295 / inTopicNo.6)  Re[5]: カレンダー
□投稿者/ よねさん -(2018/08/05(Sun) 08:01:05)
    前に書いたコードで、コンマが抜けていました。
    Sheet1以外のシートがアクティブな状態で実行するとまずい結果になってしまいます。
    If Weekday(.Cells(i, 2).Value) = sh2.Cells(2, 1).Value Then Cells(i, 3).Value = sh2.Cells(3, 1).Value
    ↓
    If Weekday(.Cells(i, 2).Value) = sh2.Cells(2, 1).Value Then .Cells(i, 3).Value = sh2.Cells(3, 1).Value
    のように修正してください。
    
    ついでに、シート2が
    月曜	火曜	水曜	木曜	金曜	土曜	日曜
    2	3	4	5	6	7	1
    出勤	出勤	休日	休日	出勤	出勤	休日
    といった具合で、A1〜G1に入力されていて、その右が空欄である場合は
    ↓のようにすることができます。
    
    Sub test()
    Dim i As Long, j As Long
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Set sh1 = Worksheets("Sheet1")
    Set sh2 = Worksheets("Sheet2")
    Dim RC As Long
        With sh1
            RC = sh2.Range("A1").End(xlToRight).Column
            .Range(.Cells(4, 3), .Cells(35, 3)).Value = ""
            For i = 4 To 35
                For j = 1 To RC
                    If .Cells(i, 2).Value = "" Then Exit For
                    If Weekday(.Cells(i, 2).Value) = sh2.Cells(2, j).Value Then .Cells(i, 3).Value = sh2.Cells(3, j).Value
                Next j
            Next i
        End With
    End Sub
    

引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Pass/

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

- Child Tree -