[[20070524201424]] 『フォームのリセット』(とっちゃん) ページの最後に飛ぶ

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

 

『フォームのリセット』(とっちゃん)
 表を月の1日から月末まで作りました。それぞれの日のセルに「表示」「ツールバー」「フォーム」から「チェックを入れるアイコン」をそれぞれ与えました。各日によって「On」にする日と「off」にする日があります。したがって、その月は各種入り交じった状態ですが、次の月にはすべて[off」の状態にしたいと思います。どのようなすればよいのか教えていただけませんか?

 どの時点で「次の月」を判断するのかが不明ですが・・・。
 フォームのチェックボックスを一括でオフにするのなら、

 Worksheets("Sheet1").CheckBoxes.Value = xlOff

 こんな感じで出来ます。
 (MARBIN)

 蛇足ながら、当月に存在しない日付のチェックボックスを非表示にする
 マクロを考えてみました。
 A1からA31までチェックボックスがセルに収まるように設置されている
 との前提です。

 Dim MyChk As Object
 Dim matu As Date
  matu = DateAdd("d", -1, DateSerial(Year(Date), Month(Date) + 1, 1))
  For Each MyChk In ActiveSheet.CheckBoxes
   If MyChk.TopLeftCell.Row > Day(matu) Then MyChk.Visible = False
  Next
 (MARBIN)

 >A1からA31までチェックボックスがセルに収まるように設置されている
 >との前提です。

 A列限定ではありませんでした。
 列はどの列でもかまわないですが、
 行は1行目から31行目までです。
 行がずれている場合は
 >MyChk.TopLeftCell.Row
 の部分を改造する必要があります。
 (MARBIN)

MARBIN様最初のお答えで私自身理解できていませんが、標準モジュールに貼り付けましたところ、思っていたことができました。本当に有難うございmすた。<とっちゃん>

 ちょっと修正しました。
 ない日付のチェックボックスを非表示にするだけでなく、
 先月ない日付として非表示にして、今月は存在する日付の
 チェックボックスを再度表示するようにしました。

 Dim MyChk As Object
 Dim matu As Date
  matu = DateAdd("d", -1, DateSerial(Year(Date), Month(Date) + 1, 1))
  For Each MyChk In ActiveSheet.CheckBoxes
   If MyChk.TopLeftCell.Row > Day(matu) Then
      MyChk.Visible = False
   Else
      MyChk.Visible = True
   End If
  Next
 (MARBIN)

 チェックボックスが配置されている行番号ではなく、チェックボックスの名前で
 判定するサンプルです。

 Dim MyChk As Object
 Dim matu As Date
  matu = DateAdd("d", -1, DateSerial(Year(Date), Month(Date) + 1, 1))
  For Each MyChk In ActiveSheet.CheckBoxes
   If (Replace(MyChk.Name, "Check Box ", "")) * 1 > Day(matu) Then
      MyChk.Visible = False
   Else
      MyChk.Visible = True
   End If
  Next
 (MARBIN)

コメント返信:

[ 一覧(最新更新順) ]


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