エクセル男子(小技1:SelectionとFor Each) [コンピューター]
エクセル2010で、ボタンを押したら、何かさせる。。シリーズのおまけです。ここからは、インターネット上の諸先輩から学んだVBAの小技を紹介していきます。
【やりたいこと】
・ボタンを押したとき、ワークシートで現在、選択されているセルに 今日の日付(例:2012/6/9) を代入する。
【目次】
1.開発メニューを表示
2.ボタンを作成
3.VBA(Visual Basic)でマクロを作成
4.動作確認
5.小技1:SelectionとFor Each(この記事)
・マクロの全体像
【エクセル男子(小技1)】
前回、
ActiveCell.Address
を使用した場合、選択されているセルのうち、1つにしか、今日の日付が代入できないことを、お話ししました。
では、どうすれば、いいのでしょう? その答えは、『Selection』です。
次のVBAを使うと、選択した複数のセルに今日の日付を代入することができます。
1: Dim objRANGE As Range ' Range型
2: For Each objRANGE In Selection.Cells
3: objRANGE.Value = Format(Now(), "yyyy/m/d")
4: Next
1行目:Range型の変数を定義
2行目:For Each文を使用し、複数選択されたセル(Selection.Cells)を1つずつ取り出し、4行目のNextの間に挟まっている3行目の命令を繰り返す。
3行目:1つずつ取り出したセル(objRANGE)の値(.Value)に、現在の日付(Now)を"yyyy/m/d"の書式で代入する。
4行目:2行目のFor Each文とセットで、繰り返しの範囲を示す。
ジョージは頭が悪いので、いや、説明が下手なので、分からない方は、Google先生に『VBA』と入れて検索しれ下さい。。。
ジョージは、他人の話を聞かないからね~。
チョーヤ ウメッシュ CM 北乃きい 15秒×2
【やりたいこと】
・ボタンを押したとき、ワークシートで現在、選択されているセルに 今日の日付(例:2012/6/9) を代入する。
【目次】
1.開発メニューを表示
2.ボタンを作成
3.VBA(Visual Basic)でマクロを作成
4.動作確認
5.小技1:SelectionとFor Each(この記事)
・マクロの全体像
【エクセル男子(小技1)】
前回、
ActiveCell.Address
を使用した場合、選択されているセルのうち、1つにしか、今日の日付が代入できないことを、お話ししました。
では、どうすれば、いいのでしょう? その答えは、『Selection』です。
次のVBAを使うと、選択した複数のセルに今日の日付を代入することができます。
1: Dim objRANGE As Range ' Range型
2: For Each objRANGE In Selection.Cells
3: objRANGE.Value = Format(Now(), "yyyy/m/d")
4: Next
1行目:Range型の変数を定義
2行目:For Each文を使用し、複数選択されたセル(Selection.Cells)を1つずつ取り出し、4行目のNextの間に挟まっている3行目の命令を繰り返す。
3行目:1つずつ取り出したセル(objRANGE)の値(.Value)に、現在の日付(Now)を"yyyy/m/d"の書式で代入する。
4行目:2行目のFor Each文とセットで、繰り返しの範囲を示す。
ジョージは頭が悪いので、いや、説明が下手なので、分からない方は、Google先生に『VBA』と入れて検索しれ下さい。。。
ジョージは、他人の話を聞かないからね~。
チョーヤ ウメッシュ CM 北乃きい 15秒×2
最近でこそエクセルはあまり使いませんが、
以前務めていた会社で月一回の棚卸の時に、
生産管理部の棚卸担当者でしたのでマクロで
表を組み立て、当日はボタン一つ押せばすべての
部署の棚卸データーを集計し、レポートがプリント
されるようなものを作ったことがあります^^;
by Loby (2012-06-18 23:56)
奥が深いですね。
by ねじまき鳥 (2012-06-19 00:05)
Lobyさん、
世の中にはエクセル使い倒している方がいっぱいいらっしゃいますね。
拙者も、自分の仕事がいくらかでも楽になるようにマクロ作ってます。
ねじまき鳥さん、
ホント奥が深いと思います。
(^_0)ノ
by cheese999 (2012-06-19 22:01)
nice! ありがとうございます。
(^_0)ノ
by cheese999 (2012-06-19 22:02)