• ベストアンサー

Excel VBA&マクロについて

現在エクセルで個人の毎日の状態チェックを表にして作成しています。 しかし、月初めに次の月の準備として、年・月・曜日・をコピーしては書き換えといった具合に行わなくてはいけません。 状態チェックは50人以上しなくていけず、コピー&書き換えではやはり時間がかかってしまいます。 そこで、VBA&マクロを使用し、メッセージウインドウに年・月・曜日・の入力アイアログボックスを組み込み、そこを入力することで 全部チェック表の年・月・曜日の書き換えが行えるようにできないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

マクロを使わなくても次のようにすればよいでしょう。 例えばSheet1について一つのフォーマットを作成して、その後にシート見出しのSheet1を右クリックして「シートに移動またはコピー」から「コピーを作成する」にチェックをしてOKすればたくさんのコピーを作成できますので、それらを上手に利用すればよいでしょう。 ところでSheet1でのフォーマットの作成ですが、例えば次のようにします。 A1セルには2009/8/1と入力して、右クリックし「セルの書式設定」で「表示形式」のタブから「日付」の2001年3月を選択してOKします。 これで2009年8月と表示されますね。2009年9月にする場合には2009/9/1とA1セルに入力すればよいでしょう。また、B1セルにはチェック表とすれば2009年8月チェック表のように表示できますね。 ところで、それから8月の日付や曜日を表示させるには例えば次のようにします。 A3セルに日付、B3セルに曜日と入力します。 A4セルには次の式を入力します。 =IF(MONTH(DATE(YEAR(A$1),MONTH(A$1),ROW(A1)))=MONTH(A$1),DATE(YEAR(A$1),MONTH(A$1),ROW(A1)),"") B4セルには次の式を入力します。 =IF(A4="","",TEXT(A4,"aaa")) A4セルとB4セルを選択して34行まで下方にオートフィルドラッグします。 これによってA4セルからA34セルまでを選択してセルの表示形式を日付で3月14日とすることで、8月1日から8月31日が表示されます。単に1日から31日と表示させたい場合には表示形式の「ユーザー定義」でd"日"と入力すればよいでしょう。なお、曜日はB列に表示されます。 A1へ2009/9/1と入力すればA1セルには2009年9月と表示されその月の日付と曜日が自動的に表示されます。 要はA1セルへの入力をするだけで表が出来上がります。このようにして作ったSheet1を次々にコピーして使うことで目的は達成できることでしょう。 ぜひご検討ください。

その他の回答 (1)

回答No.2

全て同じフォーマットであるなら対象のシートを全て選択して修正したいところを串刺しで修正ではだめですか?

関連するQ&A