[PR]今日のニュースは
「Infoseek モバイル」


VBA基礎の基礎  EXCEL_VBA講座、基礎の基礎 
 第3回 マクロを登録してみよう!!
マクロを登録してみよう!!

 
練習ファイルは vba01.XLS DLできるよ!!
自動マクロから並替のマクロを作ってみよう!!
 さて、前回のマクロを作成したと同様に並替のマクロに挑戦じゃ!!
 まず、ツール→マクロ→新しいマクロの記録と、ここまではよいの〜
 そして、マクロの記録が出るからOKを押すのじゃ!!
 ほ〜れ、簡単じゃろ〜 
 それからは、並替と同じように操作すればいいわけじゃな、
 まず、シート名のsheet1これをクリックしておく。
 そうすると自動的にマクロが記述してくれるぞ!!
 (これはテクニックじゃ!!覚えておこう!!)
 
 
 次に範囲を選択じゃ
 氏名からMさんの合計つまりセルB2からI17まで選択するぞ!!
 


 それから データ→並替を選ぼう!!
 そうすると下の図がでてきたでっしゃろ、
 
 ほんで、まず一つだけ、今回は国語を選択!!
 最優先されるキー、これを国語に選択するわけですな!!
 ほんで、並べ替えは降順にしておきますわ。
 こうすれば成績のいいもん順から並び替えてくれまんねん!!
 

 そうすると結果は次のようになったかの〜!!
 

 うまくいけば、よ〜し、これで記録終了を押す。
 これは前回のとおりじゃな!!

 さ、これで下準備ができたよ〜ん!!


マクロを見てみようぜ!!

  
それじゃ、ツール→マクロ→Visual Basic Editorをクリックしてみよう!!
   モジュール1(Module1)を見てくれ!!
   Macro1には下のように書かれているのがわかるだろう!!
Sub Macro1()
'
' Macro1 Macro
'マク ロ記録日 : 2002/1/10 ユーザー名 : たこちゅー
'

Sheets("Sheet1").Select
Range("B2:I16").Select
Selection.Sort Key1:=Range("D3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin

End Sub
 
 記録をするとき、いらぬセルを障ったりすると余分なコードが入るので
 もしこれ以外のコードが入っていたらそれはいらないものだから、
 削除しておこうネ!!

 各々の説明は、ここではしないよ!!
 そういうことを知りたい人は、VBAの達人がいるから、そこで聞くといいじゃろう!!

 ここで注目しておきたいのは 選択範囲!!これがミソでんなぁ!!
  Range("B2:I16").Selectって書いてあるところ、
  この B2:I16 の範囲を任意に変えれば(シート内の範囲であれば)
  応用が利くというもんですわ!!
  それからSheet1の選択!!
  この記述がないと、他のシートでマクロを実行すると、そのシートで
  並替を行ってしまうので要注意じゃな!!
  (こういったことは、自分が行いたいマクロをするときの条件で決めればよいのじゃ)
 
 それから
  Sheets("Sheet1").Select
  Range("B2:I16").Select

 これは、ひとつにまとめることもできるぞ、 
 
 つまり
  Sheets("Sheet1").Range("B2:I16").Select
 でもよい!!

 まぁ、ここらへんは、微妙じゃ!!こだわる人はこうなおせばよい!!
 それから、次にSelection.・・・って書いてあるので、つまり選ばれた次のアクションが
 実行されるわけで
 並替は Sort で Key1:=Range("D3") って書いてある。
 さっき選択して並替えたときは、国語を選択したはずなのに・・・・
 じゃが、これも、自動マクロでかってに書き換えてくれているのじゃな、
 かしこいの〜!!

 さぁ、これで、大体察しはついてきたと思うが、
 社会、理科、数学、英語の順だと
 E3、F3、G3、H3を指定しておけば、それぞれの並替マクロが完成するわけじゃなぁ!!
 ついでにMacroの名前も換えておこう!!

Sub 国語成績順()
'Sheets("Sheet1").Select
Range("B2:I16").Select
Selection.Sort Key1:=Range("D3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
End Sub

Sub 社会成績順()
'Sheets("Sheet1").Select
Range("B2:I16").Select
Selection.Sort Key1:=Range("E3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
End Sub

Sub 理科成績順()
'Sheets("Sheet1").Select
Range("B2:I16").Select
Selection.Sort Key1:=Range("F3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
End Sub

Sub 数学成績順()
'Sheets("Sheet1").Select
Range("B2:I16").Select
Selection.Sort Key1:=Range("G3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
End Sub

Sub 英語成績順()
'Sheets("Sheet1").Select
Range("B2:I16").Select
Selection.Sort Key1:=Range("H3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
End Sub

 という具合に書き直してくれ!! これはコピペで手作業でしてほしいものじゃな。
 まぁ、いやっだったら、自動マクロでそれぞれで実行しておいてから
 マクロ名を変えてもいいけど(慣れるまでそうしておいてもいいけど)
 なかなかすっきりせさた文にはしづらいところもあるので、ガンバッテ
 自分でやってほしいぞ!!


マクロを登録するよ!! 
 さぁ、今度は、エクセルのシートにコマンドボタンを付けてみよう!!
 これは図を書いてそれに登録という方法もあるじゃが、
 図は、他の人が障ったときにでも、知らない間に消してしまう恐れが多い。
 それを防ぐためにも、コントロールツールボックスを使おう!!
 表示→ツールバー→コントロールツールバーにチェックする。
 
 そうすると↑のツールボックスが出てきたじゃろう

 次に赤いのマークのデザインモードをチェック!!
 それからボタンを押してみよう!!
 それを押すと+のマウスカーソルが表示されるので
 ドラッグして長方形を作るんだよ。
 そうすると
  コマンドボタンができあがり!!

  次に←のプロパティボタンを押すよ。

 そうすると下のプロパティが表示されるよね。
 コマンドボタンのプロパティをしりたいときには図のようにコマンドボタンを
 選択するんだ。そうすれば、コマンドボタンのプロパティが表示されんやね。
 
 

 CommandButton1という名前はわかりにくいので、まず、「国語成績順」
 という名前をつけよう。これはプロパティのなかのCaptionを換えるか
 あるいはコマンドボタン選択状態で右クリックしてコマンドボタンオブジェクト→
 編集でも換えることができるんだ!!
 もう一つオブジェクト名も同名にしておこう!!こうするとわかりやすいからね!!
 

 次にフォントが大きい場合はFontで、右のMS Pゴシックを押せば
 ボタンが表示されている。それを押せば付けた名前のフォントを換えたり
 フォントの大きさなどを換えることができるんだ。

 次に、作成したコマンドボタンを押したまま(これが、大事なんだ!!)
  ←「コードの表示ボタン」を押してみよう。

 そうすると、エクセルからVBAに移行し、コードが表示されるぞ!!
 (\(◎△◎\)ビックリするなよ!!)
 

 そして、次は先ほど作ったマクロ名をこの中にいれちゃうのだ!!
 まずは Sub 国語() だよね!!
 これは命令語 国語 を入れれば
 このコマンドボタンを押すことによって 実行されるわけなんだよ!!

 Private Sub 国語成績順_Click()
 国語
 End Sub

 さぁ、これで完成。
 他のもこれと同じように作成すればいいけど
 ボタンの複製は、ctrlキーを押しながらドラッグすれば簡単に作ることができるよ!!
 複製ボタンをとりあえず4個作ってCaptionとオブジェクト名を変更して、
 そして、それぞれ、先ほどと同じようにコードの表示ボタンを押して
 マクロを作成しよう!!そして、命令後、社会、理科、数学、英語を入れれば
 完成!!

 最後にデザインモードを元にもどしておこう!!
 これで、並替ボタンを押せば一発で並替ができるはずだ!!よね!!ヽ(∇⌒ヽ)

 完成図(英語成績順を押した結果)
 

 完成したファイル VBA02.XLS DLできるよ!!

 いやいや、今回はどうだったかな、うまくいきましたかいなぁ?
 自動マクロ機能って結構便利だと思いまへんか?
 VBAがわからなくても、ちょっとした工夫で、それらしきものができる、
 VBAを駆使することで、ほんとに便利なツールを自分で作ることができるやね。
 だから面白いのかもしれまへんなぁ!!
 自動マクロ機能は、VBAのほんの入り口やけど、
 初心者の方には、いろいろと教えてくれる便利なツールなんやね。
 今回は、実際にエクセルのシート上で、ボタンをつけて、マクロ登録しやした!!
 一応、今回でVBAとマクロについては終わりでやんす。
 もっと知りたいひとは、その道の達人がいますので、その人たちに譲るということで
 
 では、おしまい、またね♪(゚・^*)ノ⌒☆
 by たこちゅー