|
▼ひかる さん:
>▼kanabun さん:
>早いご回答ありがとうございます。
>今から、このコードを解読してやってみます。
大変良い心がけです。
ただ、漫然と「解読」しようとしても効率が悪いので、
2、3点、こんな風にしてデバッグするとよい方法を紹介します。
(1)ExcelシートとVBAコードの両方をスクリーン(display)に見えるように
画面を配置してコードを一行づつStep実行しながら、ワークシートの
変化を確認する(今回は まず 集計表のあるワークシートSheet2を
対象に処理しますから、Sheet2をExcel画面にして、Sub Try1()コード
の一部が同じ画面上に見えるようにして検証を始めるとよいでしょう)
(2)コードは[F5]で一気に実行するのではなく、[F8]キーで1行づつステッ
プ実行する。
ステップ実行については
ht tp://hp.vector.co.jp/authors/VA016119/step/step01.html
あたりをよく読んで、実践してください。
(3)変数の値変化やシートの範囲を確認するために、VBAコードにDebug用の
コードを一時的に挿入する。
たとえば...
> With Worksheets("Sheet2")
> Set r = .Range("A1").CurrentRegion '書きこみ先表範囲
> End With
> Set r = Intersect(r, r.Offset(1, 1)) 'そのうち、正味データ部
> r.ClearContents '行列見出しを除く正味データ部をクリア
> tbl = r.Value 'クリア後の範囲を配列に格納
という出だしのコード部分で、Sheet2 から 表範囲を取得し変数 r に代入
していますが、この範囲を確認するには
あらかじめ Sheet2 をアクティブにしておいて、
> Set r = .Range("A1").CurrentRegion '書きこみ先表範囲
のあとに、
r.select
Msgbox r.Address(0,0) & vbCr & "全体表範囲です"
などとして、範囲を確認するといいでしょう。
さらに、変数r はその直後 行と列見出し部分を取り除いた正味データ
範囲だけに絞り込まれます。↓
ここも、
> Set r = Intersect(r, r.Offset(1, 1)) 'そのうち、正味データ部
r.select
Msgbox r.Address(0,0) & vbCr & "正味書き込み範囲です"
としておくと、判りやすいでしょう。(もちろん、処理の内容が分かっ
たら、消去してください。セルをSelectするのは 実際の処理には必要
ないことなので)
そのあと、
> r.ClearContents '行列見出しを除く正味データ部をクリア
> tbl = r.Value 'クリア後の範囲を配列に格納
によって、範囲のデータ(すべてEmptyのはず)が 変数tblに代入され
ます。変数tbl は複数セル範囲の値ですから、配列 です。
この値が現在どうなっているかは
VBAメニュ-[表示]-[ローカルウィンドウ]を覗いて確かめてください。
|
|