[[20200716025126]] 『チェックボックス 真偽の値入力と日付入力 マク』(M&M) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『チェックボックス 真偽の値入力と日付入力 マクロの列コピー』(M&M)

業務進捗表を作成しています。
進捗に応じて、チェックボックスにチェックを入れると、セルのカラー変更がされて、右隣にチェックした日付が反映されるものを作成したいです。

マクロは全く知識が無く、見よう見まねでやっているのですが、以下のようなマクロを業務が増えるごとに、1,2,3行と・・とデータを増やしていきたいのですが、うまくコピー出来ませんでした。

Sub チェック23_Click()

    Range("C3").Select
    Selection.Copy
    Range("H7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
With ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(0, 1)
.Value = Not .Value
End With
End Sub

真偽の値(セルのカラー変更を条件付き書式で反映してます)のみの場合は行のセルコピーで出来ました。約200行ほどのデータをまとめたいので、一つ一つのチェックボックスにマクロを登録していくのは大変で、、どなたか教えていただけると助かります。

よろしくお願いいいたします。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


質問をした者です。
追記します。

C3セルには「=TODAY()」
H7セルは日付を貼り付けています。

分かりにくい質問ですみませんが、よろしくお願いします。
(M&M) 2020/07/16(木) 03:44


 >200行ほどのデータをまとめたいので、一つ一つのチェックボックスにマクロを登録していくのは大変で、

 私なんか、200個のチェックボックスを貼り付けるのも大変と思っちゃいます。
 チェックボックスにチェックを入れる操作は、M&Mさん自身がやるんでしょうか?

 ご自身なら、チェックボックスなんて使わずに、セルの右クリックでやる方が簡単と思います。
 右クリックしたらチェックマークをセルに表示して、色付けする仕掛けにすれば簡単。

 他人にやらせるとなると「セルを右クリックするんだよ」と言う指示は分かりにくいので
 チェックボックスを配置せざるを得ないとは思います。

 まず、その点を先に詰めたい気がします。

(半平太) 2020/07/16(木) 16:44


半平太様
部内で同じ業務を行う5人で共有する予定のデータです。

皆さんあまりPCが得意でなく、簡単に出来るものをと考え、チェックボックスかなと思いました。現在は、この時代に手書きの表です。。その分漏れも多く出てしまっていて、なんとか改善できないものかと考えているのですが…。

私の求めているものは初心者でも少し勉強すればわかるような内容でしょうか。。
(M&M) 2020/07/16(木) 21:30


 >一つ一つのチェックボックスにマクロを登録していくのは大変で

 取り敢えず、全チェックボックスにマクロを自動的に登録してみましょう。

 1.「ブックを開いた時」と「業務進捗表シートをアクティブにした時」に
    自動的にマクロ登録を行います。

   ※ 既に登録済みの場合はスキップさせます(その方が、毎回全て登録するより速度アップするので)

 2.新規でチェックボックスを追加した時は
  (1) setOnAction() を個別に実行するか、または
  (2) 一旦別のシートをアクティブにしてから、すぐ業務進捗表シートへ戻る。

 3.ThisWorkbookモジュールに貼り付け------------------

   Private Sub Workbook_Open()
       Call Worksheets("業務進捗表").setOnAction
   End Sub

 4.業務進捗表シートのシートモジュールに貼り付け--------------

   Private Sub Worksheet_Activate()
       Call setOnAction
   End Sub

   Sub setOnAction()
       Dim ckBx As CheckBox

       For Each ckBx In Me.CheckBoxes
           If ckBx.OnAction = "" Then
               ckBx.OnAction = Me.CodeName & ".checkBoxUpdate"
           End If
       Next
   End Sub

   Private Sub checkBoxUpdate() '旧チェック23_Click()
       Range("H7").Value = Range("C3").Value
       With Me.Shapes(Application.Caller).TopLeftCell.Offset(0, 1)
           .Value = Not .Value
       End With
   End Sub

(半平太) 2020/07/16(木) 23:54


半平太様

詳しく教えていただきありがとうございます。
初心者の私には上記コードがうまく出来ませんでした。。別部署の方にいただいた情報の入力を依頼してみようかと思います。

分かりにくい質問に丁寧に教えていただき、ありがとうございました!
(M&M) 2020/07/17(金) 01:58


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.