Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


578 / 13645 ツリー ←次へ | 前へ→

【79593】最終行が取得できません... [名前なし] 18/1/31(水) 12:19 質問[未読]
【79594】Re:最終行が取得できません... γ 18/1/31(水) 13:06 回答[未読]
【79595】Re:最終行が取得できません... γ 18/1/31(水) 18:43 発言[未読]
【79597】Re:最終行が取得できません... [名前なし] 18/1/31(水) 23:58 質問[未読]
【79598】Re:最終行が取得できません... γ 18/2/1(木) 7:12 回答[未読]
【79603】Re:最終行が取得できません... [名前なし] 18/2/1(木) 23:54 お礼[未読]
【79604】Re:最終行が取得できません... γ 18/2/2(金) 7:39 回答[未読]

【79593】最終行が取得できません...
質問  [名前なし]  - 18/1/31(水) 12:19 -

引用なし
パスワード
   最終行が取得できません...
VBAでヒストグラムを作ろうとしていて、最終行が変化する可能性のあるデータを対象とするため、最終行を関数?で取得して範囲を設定しようと思っています。しかし、以下のマクロではエラーとして「ヒストグラムデータ区間を指定してください」と表記されます。VBAを学び始めたばかりなので、どうかご教授ください。
- - - - - - - - -

Sub Histogram()
LASTROW = Cells(Rows.Count, 1).End(xlUp).Row
c_addr1 = 1  '開始行
c_addr2 = LASTROW  '最終行
start_cell = "$B$" & c_addr1 
end_cell = "$E$" & c_addr2
data_range = start_cell & ":" & end_cell


Application.Run "ATPVBAEN.XLAM!Histogram", ActiveSheet.Range(data_range) _
, "", ActiveSheet.Range("$G$1:$G$10"), False, False, True, False

End Sub

【79594】Re:最終行が取得できません...
回答  γ  - 18/1/31(水) 13:06 -

引用なし
パスワード
   ステップ実行というデバッグ手法をご存じですか?
F8キーを使うものです。
それで一行毎に実行して、変数の値が想定どおりとなっているか確認してください。

それと同時に、変数は必ず宣言するようにして下さい。

Option Explicit
をモジュールの一行目に挿入するようにして下さい。
そうすれば、未宣言の変数には警告が出ます。
ht tp://officetanaka.net/excel/vba/beginner/06.htm
を参考にして下さい。

なお、
ツール − オプション − 編集 で
「変数の宣言を強制する」にチェックを入れておけば、
モジュールを作成した時点で、Option Explicitが自動的に挿入されるので、
手間が省けます。
(生涯に一度だけ)チェックを入れておけば、以後、気にする必要はありません。

【79595】Re:最終行が取得できません...
発言  γ  - 18/1/31(水) 18:43 -

引用なし
パスワード
   ちなみに、私の手元では正常に動作しました。
(Option Explicitを無効化したうえですが)

【79597】Re:最終行が取得できません...
質問  [名前なし]  - 18/1/31(水) 23:58 -

引用なし
パスワード
   ご回答ありがとうございました。
アドバイス・参考URLを拝見させていただき、再度下記のマクロで実行しましたが、いまだに同様のエラーが発生します。。。何か他に設定で変更しきれていなかったり、あるんでしょうか?

Option Explicit
Sub Histogram()
Dim i
Dim c_addr1
Dim c_addr2
Dim start_cell
Dim end_cell
Dim data_range
i = Cells(Rows.Count, 1).End(xlUp).Row
c_addr1 = 1  '開始行
c_addr2 = i  '最終行
start_cell = "$B$" & c_addr1
end_cell = "$E$" & c_addr2
data_range = start_cell & ":" & end_cell


Application.Run "ATPVBAEN.XLAM!Histogram", ActiveSheet.Range(data_range) _
, "", ActiveSheet.Range("$G$1:$G$10"), False, False, True, False

End Sub


▼γ さん:
>ちなみに、私の手元では正常に動作しました。
>(Option Explicitを無効化したうえですが)

【79598】Re:最終行が取得できません...
回答  γ  - 18/2/1(木) 7:12 -

引用なし
パスワード
   > 何か他に設定で変更しきれていなかったり、あるんでしょうか?

その前に、私の助言はどうなりましたか?
> ステップ実行というデバッグ手法をご存じですか?
> F8キーを使うものです。
> それで一行毎に実行して、変数の値が想定どおりとなっているか確認してください。

Application.Run の前まで実行した段階で、
以下の変数には何が入っているか回答してください。

i
c_addr1
c_addr2
start_cell
end_cell
data_range

一つ気になるのは、アドインを使用できる状態になっているかですが、
分析ツール - VBA はチェックを入れていますよね。
入れていなければ、別のエラーメッセージのはずなので、そこはOKだと思いますが。

あとは、対象データのあるシートがアクティブシートになっているかぐらいでしょうか。

# 名前なし というのはなぜ?

【79603】Re:最終行が取得できません...
お礼  [名前なし]  - 18/2/1(木) 23:54 -

引用なし
パスワード
   無事解決いたしました!
デバックももちろん一番に試しましたが、うまくいきませんでした。
シートをアクティブ化することでうまくいきました、ありがとうございました。
P.S.名前が名無しだったのは一度目の投稿で名無しにしてしまったので、次回も名無しのほうがわかりやすいと思ったからです。
▼γ さん:
>> 何か他に設定で変更しきれていなかったり、あるんでしょうか?
>
>その前に、私の助言はどうなりましたか?
>> ステップ実行というデバッグ手法をご存じですか?
>> F8キーを使うものです。
>> それで一行毎に実行して、変数の値が想定どおりとなっているか確認してください。
>
>Application.Run の前まで実行した段階で、
>以下の変数には何が入っているか回答してください。
>
>i
>c_addr1
>c_addr2
>start_cell
>end_cell
>data_range
>
>一つ気になるのは、アドインを使用できる状態になっているかですが、
>分析ツール - VBA はチェックを入れていますよね。
>入れていなければ、別のエラーメッセージのはずなので、そこはOKだと思いますが。
>
>あとは、対象データのあるシートがアクティブシートになっているかぐらいでしょうか。
>
># 名前なし というのはなぜ?

【79604】Re:最終行が取得できません...
回答  γ  - 18/2/2(金) 7:39 -

引用なし
パスワード
   特定のシートモジュールに書かれたプロシージャだったということですか?

シートモジュールのプロシージャでシートを省略すると
「そのプロシージャが書かれたシート」が前提になります。
どのシートがアクティブかは関係しません。

一方、標準モジュールに書かれたプロシージャで、シートを省略すると、
「その時にアクティブなシート」が指定されたことになります。

この違いをよく理解して下さい。

デバッグを最初からしているなら、その結果をキチンと質問中に
織り込んで下さい。そのほうが双方の時間が節約できます。
また、基本的なことが理解されているかも判明しますから。

578 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free