Sub sample2()
Dim rng8 As Range
Set rng8 = Range("B2:E4")
rng8(3).Interior.ColorIndex = 5
With rng8
.(3).Interior.ColorIndex = 5
End With
End Sub
上記で
rng8(3).Interior.ColorIndex = 5
は問題無く機能しますが、
withステートメントの
.(3).Interior.ColorIndex = 5
は修飾子なんたらのエラーになります。
どのように書けば宜しいのでしょうか。
勿論、
With rng8(3)
.Interior.ColorIndex = 5
End With
とやれば出来るのですが、
(3)の部分を色々変更したいのです。
宜しくお願いします。
No.2
- 回答日時:
B2:E4 は、12セルあるわけで、その「3番目」なんて、どこのセルなんて分かりますか?
With rng8
.Item(3).Interior.ColorIndex = 5
End With
このようには書けますが、ふつうは、一行や一列で行うので、複数行・複数列の場合は、あえて書く場合は、Cells プロパティを使います。
1行目の3列目という意味で、このように書きます。
.Cells(1, 3).Interior.ColorIndex = 5
早速有り難うございました。
回避方法が分かったので直接の解決にはなりましたが、
(質問の仕方が悪かったのですが)
聞きたかったことは、
なぜ、 .(3).interior.coloerindex = 5
がコーディング上のエラーになるのかということです。
コレについて教えていただけると助かります。
宜しくお願いします。
No.3ベストアンサー
- 回答日時:
>なぜ、 .(3).interior.coloerindex = 5
>がコーディング上のエラーになるのかということです。
端的にいうなら、配下のプロパティがないから、ということでしょうけれども、正直な話ですが、インテリセンスによって導かれるだけなのです。(インテリセンスというのは、VBA Editor 上で、オブジェクトの後にプロパティやメソッドの一覧が出てくる入力補助機能のこと)
With Rng8
.(この後に、何が続くのかインテリセンスで探してみる)
と[. ピリオド]を入れたあと、もしくは.(3)と入れた後に、その配下に何らかのプロパティが続いてくれるなら書けるけれども、そうならないので、駄目なのだなっていうことが分かるのです。理屈とか理由とかではなく、VBAの癖のようなものだと理解しています。
それでは、
Rng8(3).Interior.ColorIndex =5 と書けるのだから、
With Rng8
(3).Interior......
はどうかということでしょうけれど、上位オブジェクトのつながりを持たないで書いたところで、いきなり(3)では、上位オブジェクトをつないでないので、これは駄目だなって分かります。もともと、Rng8(3)は、Rng8.Item(3).Interior..... のItemが省略されているわけなのですから、それを戻してあげればよいということです。VBAにはいくつか省略型の書き方がありますが、それをまったく知らないで書いている人もいるようです。例えば、Range("A1") で、.Valueプロパティを書かないで書いてしまうとか。
実際、私は、書く時は、習慣的なものでしかありません。
再度、有り難うございました。
まず、私の質問の意図を完璧に理解いただき嬉しく思いました。
次ぎに、ご説明頂いた内容が良く理解出来ました。
本件では、Rng8.Item(3).Interior.....がオーソドックスな形だったのですね。
ご指摘のとおり、私は何も知らずに見よう見まねで書いています。
ただ、「Range("A1") で、.Value」については昔はそうでしたが、今はvalueは必ず入れています。
本回答を頂いたことでスッカリもやもやが晴れました。
かつ勉強になりました。
長々とお手間を掛けさせましたが深謝です。
お世話になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Excel(エクセル) excelvbaのwithについて 4 2022/12/19 16:51
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルのVBAの標準モジュール...
-
PowerPointVBAでスライドマスタ...
-
[VBA]CDOメッセージ送信エラー
-
VBScriptでExcelのグラフを貼り...
-
VBAからPDFファイルにパスワー...
-
オブジェクトが見つかりません
-
VBA:オートシェイプの線の長...
-
Excel VBA グラフを任意sheetに...
-
sheetsメソッドの失敗
-
テキストボックス中の文字列の...
-
上下の位置揃えについて
-
EXCEL VBA オートシェイプナン...
-
VBScriptからDLL参照設定したい
-
TXTファイルをMDBファイ...
-
AccessからOutlookを立上げファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
PowerPointVBAでスライドマスタ...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルマクロエラー「'Cells'...
-
ある文字列が全て数字であるか...
-
VBAについてです。 初心者です...
-
VBScriptでファイルの日時順(降...
-
Excelでフィルタをかけると警告...
-
VBAからPDFファイルにパスワー...
-
VBで引数にDictionaryオブジェ...
-
このように書くべきですか? { ...
-
EXCEL VBA オートシェイプナン...
-
テキストボックス中の文字列の...
-
エクセルVBAでcode128のバー...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
おすすめ情報