エクセル de バブルブレーカー(Excel de Bubble Breaker)のダウンロードはこちらから
今回はこの自動で書いたプログラムを修正しましょう。
13.自動記録マクロの修正。
自動記録マクロはユーザの動作をそのまま記録します。
例えば、セルを選択して値の入力とすると、画面のスクロールが必要になったりします。
スクロールはエクセルにとって非常に重い処理になるため、画面がチラついたりしますので、
Selectメソッド、Selectionオブジェクトを使わないように修正しましょう。
つまり、選択したオブジェクトのメソッドを実行したり、プロパティを変えるのではなく、
直接指定したオブジェクトのメソッドを実行したり、プロパティを変更する。
Columns("F:IV").Select
Selection.ColumnWidth = 3
Selection.Clear
ActiveWindow.LargeScroll ToRight:=-8
Range( "F4:X10").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range( "F4").Select
ActiveCell.FormulaR1C1 = "●"
Range( "F4").Select
Selection.Font.ColorIndex = 3
Application.Goto Reference:= "得点"
ActiveCell.FormulaR1C1 = "99999"
↓↓↓
1行目 With ActiveSheet.Columns("F:IV")
2行目 .ColumnWidth = 3 '列幅を変更する
3行目 .Clear 'クリアーする
4行目 End With
5行目
6行目 With ActiveSheet.Range( "F4:X10")
7行目 With .Borders(xlEdgeLeft) '以降、F4:X10の左外枠線オブジェクトについて
8行目 .LineStyle = xlContinuous '線を直線に
9行目 .Weight = xlMedium '太さを中太線に
10行目 .Color = RGB(0, 0, 0) '線の色を自動に
11行目 End With '左外枠の操作終了
12行目 With .Borders(xlEdgeTop) '以降、F4:X10の上外枠線オブジェクトについて
13行目 .LineStyle = xlContinuous '線を直線に
14行目 .Weight = xlMedium '太さを中太線に
15行目 .Color = RGB(0, 0, 0) '線の色を自動に
16行目 End With '上外枠の操作終了
17行目 With .Borders(xlEdgeBottom) '以降、F4:X10の下外枠線オブジェクトについて
18行目 .LineStyle = xlContinuous '線を直線に
19行目 .Weight = xlMedium '太さを中太線に
20行目 .Color = RGB(0, 0, 0) '線の色を自動に
21行目 End With '下外枠の操作終了
22行目 With .Borders(xlEdgeRight) '以降、F4:X10の右外枠線オブジェクトについて
23行目 .LineStyle = xlContinuous '線を直線に
24行目 .Weight = xlMedium '太さを中太線に
25行目 .Color = RGB(0, 0, 0) '線の色を自動に
26行目 End With '右外枠の操作終了
27行目 End With
28行目
29行目 With ActiveSheet.Range( "F4")
30行目 .Value = "●" 'F4に"●"と入力
31行目 .Font.Color = RGB(255, 0, 0) 'F4のフォントオブジェクトの色を赤色に指定
32行目 End With
33行目
34行目 ActiveSheet.Range( "得点").Value = 99999 '得点を99999に
※自動記録マクロでは、ActiveCell.FormulaR1C1 = "●"となっているが、
これは数式として"●"を入力している意味になる。
単純に値を入力するならValueプロパティでよい。
※※ .ColorIndex は色番号で指定になるため、細かい指定が出来る
Colorプロパティにし、RGB関数で指定。
※※※ Withの入れ子(Withの中にWithを書くことで、ネストという)構造で利用するのは本来は避けた方がよい。
自動記録マクロについて解説してきましたが、これは結構使う機能です。
中太の罫線は .Weight = xlMedium といちいち記憶するのではなく、中太罫線を引いたときの
マクロからコピーすると覚えれば、罫線に関すること(フォントや他の指定も)覚える必要が
ありませんね。
14.セル、セル範囲の指定方法。
これが何種類かあり、エクセルのマクロの分かりにくい部分になります。
ワークシートのB2~C5を指定する。
Range("B2:C5")
Range( "B2","C5")
Range(Cells(2, 2), Cells(5, 3))
では、B2~C5の範囲で上から3番目、左から2番目(つまり、C4)はどう指定するでしょう。
Range("B2:C5").Range("B3") '範囲の中でB3の位置
Range( "B2:C5").Cells(3, 2) '範囲の中で下に3、右に2の位置
Range( "B2:C5").Cells(6) '範囲の中で7個目の位置
いずれのパターンも、最終的にRangeオブジェクトを指定していることになる。
難しい言い方をすると、『戻り値はRange』です
つまり、Range( "A1").Range("A1").Range("A1").Range("A1").Range("A1").Range("A1")
と何度書いても、A1のセルを指定していることになる。
セルの指定、Rangeオブジェクトの(つまり、セルの)プロパティとメソッドの使い方が分かれば、
エクセルマクロをマスターするのはあと少しです!
15.マクロ名の変更とボタンとの連動。
マクロ名は現在、Macro1となっています。
なんだか分かりにくいので、 "盤面初期化"とします(これも分かりにくい?)
Sub Macro1()
↓↓↓
Sub 盤面初期化()
変更したマクロが、スタートボタンをクリックしたときに動作するようにします。

表示されたプログラムは、ボタンがクリックされたときの動作を記述できます。
クリックされたときは、先ほどの盤面初期化というプログラムを呼び出すようにします。
具体的には以下のとおり
Call 盤面初期化

デザインボタンを再度クリックしこんでいない状態にすると、スタートボタンをクリックすれば
プログラムが動作し、盤面が初期化されます。
<< 第32回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その4」 | | 第34回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その6」 >>
>> HOME >> コラム >> 第33回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その5」

コラムの全インデックス
アーカイブ