ジーワンシステム社長のITコラム。
   ITについて、その他もろもろ
>> HOME >> コラム >> 第33回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その5」

« 第32回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その4」 | メイン | 第34回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その6」 »

第33回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その5」

エクセル 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」

トラックバック

このエントリーのトラックバックURL:
http://www.g1sys.co.jp/cgi-bin/app/mt-tb.cgi/50

この一覧は、次のエントリーを参照しています: 第33回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その5」:

» 第1回マクロを作ってみよう 送信元 初めてでも簡単!やってみようエクセルマクロ
まずは、マクロを作ってみましょう。 (EXCEL2003を使って行っていきます。) EXCEL2003を起動します。 メニュバーから[ツール]-... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

  • 製品案内
システム構築・運用、技術サポート・ビジネスブログ・ホームページ制作の株式会社ジーワンシステム
株式会社ジーワンシステム

〒550-0014
大阪市西区北堀江1-5-2
四ツ橋新興産ビル 11F

TEL: 06-6535-8660
FAX: 06-6535-8661

E-mail: info@g1sys.co.jp

Powered by
Movable Type 3.34