C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 【ExcelVBA】Rangeメソッドのエラー


(過去ログ 168 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■97094 / inTopicNo.1)  【ExcelVBA】Rangeメソッドのエラー
  
□投稿者/ 工場プログラマー (63回)-(2021/03/26(Fri) 13:14:23)

分類:[Microsoft Office 全般] 

Win10
結合セルの値の取得がしたくて、

For i = 1 to 最終行
If Range("A" & i).MergeArea.Item(1) = "hogehoge" then
…
End If

って感じを使ったんですど
Rangeメソッドのエラーと出ました。
指定セルでやるとうまくいくんですけど、解決策ってありますか?

引用返信 編集キー/
■97095 / inTopicNo.2)  Re[1]: 【ExcelVBA】Rangeメソッドのエラー
□投稿者/ 魔界の仮面弁士 (3027回)-(2021/03/26(Fri) 14:54:24)
No97094 (工場プログラマー さん) に返信
> If Range("A" & i).MergeArea.Item(1) = "hogehoge" then

単に Range("A1") だけで済ませると、曖昧さが出てしまいます。
どのシートの Range を操作しているのかを明確にしましょう。Cells 等も同様です。

たとえば
 If ThisWorkbook.Worksheets("Sheet1").Range("A" & i).MergeArea(1).Value = "hogehoge" Then
などのようにします。

Range("A1") というコードをシートモジュール上に書いた場合には、
Me.Range("A1") の意味となり、そのシート上のセルであることが明確になるのですが、
ThisWorkbook モジュールや標準モジュール上に記述していた場合には、
どのシートを操作しているのかが曖昧になります。


> Rangeメソッドのエラーと出ました。
> 指定セルでやるとうまくいくんですけど、解決策ってありますか?

手元の環境ではエラーを再現させられなかったので、
エラー発生時の i の値と、該当セルを含む結合セルのアドレスを教えてください。

また、正確なメッセージの内容は、
 実行時エラー '1004'「'Range' メソッドは失敗しました: '_Global' オブジェクト」
でしょうか。あるいは
 実行時エラー '1004'「'Range' メソッドは失敗しました: '_Worksheet' オブジェクト」
でしょうか。あるいは
 実行時エラー '1004'「Range クラスの MergeArea メソッドが失敗しました。」
でしょうか。それとも…。
引用返信 編集キー/
■97096 / inTopicNo.3)  Re[2]: 【ExcelVBA】Rangeメソッドのエラー
□投稿者/ 工場プログラマー (64回)-(2021/03/26(Fri) 15:42:43)
No97095 (魔界の仮面弁士 さん) に返信
> ■No97094 (工場プログラマー さん) に返信
>>If Range("A" & i).MergeArea.Item(1) = "hogehoge" then
>
> 単に Range("A1") だけで済ませると、曖昧さが出てしまいます。
> どのシートの Range を操作しているのかを明確にしましょう。Cells 等も同様です。
>
> たとえば
>  If ThisWorkbook.Worksheets("Sheet1").Range("A" & i).MergeArea(1).Value = "hogehoge" Then
> などのようにします。

コードの書き忘れがあったみたいでした、Value等…
明確にしてCells使ってみたところうまくいきました。

ありがとうございます。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -