[[20110505171210]] 『Bookのセルの年月日の西暦を、マクロボタンを使っ』(painy) ページの最後に飛ぶ

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

 

『Bookのセルの年月日の西暦を、マクロボタンを使って、年度が替わるたびに更新したい』(painy)

 はじめまして、いつもこのサイトを参考にさせていただいてます。ありがとうございます。

 Excelバージョン:2003

 売上集計を作成し、それを毎年、年度が替わるたびに、コピーして使いまわすことになりました。

 売上集計表には、年月日が入力されており、土日祝日は条件付き書式で色がつくようにしています。

 この売上集計表を来年度に使うときに、西暦が自動で変わるようにしたいと思っています。

 例えば、2011年度の4月のシートには、

 1日金 (売上)
 2日土
 3日日
 4日月 (売上)
 ・
 ・
 ・

 と続きます。

 これが、2012年度の4月になったときに

 1日日
 2日月 (売上)
 3日火 (売上)
 4日水 (売上)
 ・
 ・
 ・

 と曜日が変わるようにしたいのです。

 そこで、マクロボタンを作ってそのボタンをクリックしたら、
西暦が更新され、曜日が自動で変わるようにしたいと考えましたが、
うまくいきません。

 マクロボタンを押して、西暦を更新できるとともに、
誤って、更新させたときに戻せる方法も教えていただけると、嬉しいです。

 どなたかお知恵をお貸しください。よろしくお願いいたします。


 まず気になるのは、
 >誤って、更新させたときに戻せる方法も教えていただけると、嬉しいです。
 ですが、マクロは意図したこと以上ができません。
 EXCEL では誤った処理をアンドゥで戻すことができますが、マクロでは一旦実行した
 処理は、あらかじめ復元するためのデータを保持していない限り、戻せなくなります。
 そういう意味ではマクロは標準操作より危険です。

 で、提案ですが年度が替わるたびに使いまわすというよりは、現在使用しようとしている
 ファイルをあらかじめ原本として取っておいて、これから 20xx年用のファイルを作ると
 いう実装にしてはどうでしょうか。

 いずれにせよ、まずはシート構成、日付の入力されているセルの位置等の情報が必要だと
 思います。
 すでに曜日が数式等で処理できているのであれば、数式だけでもできそうな気もしますが、
 マクロは必須でしょうか。
 (Mook)

Mook様

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

 シート構成など情報を載せるのを忘れていました。ごめんなさい。

 実はこのデータを使うのは私の上司でして…
 「マクロは万能だから、よろしく」なんて言われまして・・・

 最初に、曜日の数式は関数で組み、1つのセルの年数を変えたら、全て変わるように設定したものの、
 その作業を、年度が替わるたびに上司にしてもらうのは難しいかなと思い、マクロボタンでできたらなと思ったのです。
 ただ、マクロボタンを繰り返し押す可能性もあり、もし、戻せるのなら…と。

 マクロは必須ではないので、ご提案いただいた方法で上司に提案してみます。
 いえ、「これでやってください」と押します!

 ほんとにありがとうございました。

 >マクロは意図したこと以上ができません。
 >EXCEL では誤った処理をアンドゥで戻すことができますが、マクロでは一旦実行した
 >処理は、あらかじめ復元するためのデータを保持していない限り、戻せなくなります。
 >そういう意味ではマクロは標準操作より危険です。

 そうなんですね。
 お話を聞いて、なんだか、ほっとしました。
 私は、マクロの経験がなく、今回初めて作ることになり
 ここ数日はマクロの本やいろいろなサイトとにらめっこしておりました。

 これから、マクロの勉強をいろいろしていこうと思っています。
 だけど、分からないことだらけで・・・

 これから、いろいろご相談させていただくと思います。
 よろしくお願いいたします。


 >マクロは必須ではないので、ご提案いただいた方法で上司に提案してみます。
 >いえ、「これでやってください」と押します!
 と言って納得する上司であれば、それにこしたことはありませんが、

 >最初に、曜日の数式は関数で組み、1つのセルの年数を変えたら、全て変わるように設定したものの、
 ここまでできているんであれば、マクロでそのセルの値を変える機能を作ったらどうでしょう。

 たったそれだけの作業を厭うのは、あまりにもという気がしますが、
 そのセルが A1 だとすると、ボタンを押せばA1が今年になります。

 Private Sub CommandButton1_Click()
    Range("A1").Value = Year(Date)
 End Sub

 これだと間違えて押しても、A1 を手で変更すれば元に戻ります。
 ここで年数を指定するのであれば、

 Private Sub CommandButton1_Click()
    If MsgBox("シートの年度を更新しますか?", vbYesNo, "更新確認") = vbNo Then
       Exit Sub
    End If
    Range("A1").Value = Application.InputBox("年を指定してください。", "更新", Year(Date), Type:=1)
 End Sub

 とすれば、マクロっぽく見えます。

 どういう場面でマクロを適用すればよいかが判断できるようになれるのが一番ですが、
 マクロの勉強のきっかけになるのであれば、それはそれで一つのチャンスかもしれません。
 (Mook)

Mookさま

ありがとうございます!!

 あの後、上司にごり押しして納得させました^^;
アドバイスありがとうございます。
上記のマクロですが、試してみました。
できました!すごいです!!
おもわず、きゃーと叫んでしまいました。

 こんな方法もあるのですね。
マクロって、やっぱりすごいですね。

 まるで、魔法のようです。
なんだか、わくわくしてきました。

 こんな風に、私も自分で考えてできるようになりたいです。
このチャンスを活かして、マクロを勉強していきます。

 こらからも、ご教示いただければと思います。
よろしくお願いいたします。
(painy)

 このように結果を報告いただけると、こちらも嬉しいですね。

 マクロは気軽に試せる EXCELの(Word などの他の Office にも使える)道具の一つです。
 せっかくのツールですから、楽しく使えるといいですね。

 情報もネットなどでいろいろと取得できますから、こんなことできるかなぁ、と思ったら
 調べるてみるといいと思います。

 もちろん、数式や条件付き書式など一般機能でできることもたくさんありますし、必ずしも
 マクロがよいわけではありません。器用貧乏って言葉もあります。

 いろいろな引き出しを持てて、適切なものを使えるようになるということが大切だと思います。
 (Mook)


コメント返信:

[ 一覧(最新更新順) ]


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