
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はありませんか?
例えば、セルに値を代入場合であれば、
Sub test()
Dim arr(2, 2) As Integer
Dim rg As Range
Set rg = Worksheets(1).Range("A1:B2")
arr(0, 0) = 1
arr(0, 1) = 0
arr(1, 0) = 0
arr(1, 1) = 1
rg.Value = arr '<- これと同じように
End Sub
というように、セルへの値代入を配列を用いて、プロパティ呼出し1回で済ませることが出来ますよね。。
で、セルの色の場合も、同じように、
Sub test2()
Dim arr(2, 2) As Long
Dim rg As Range
Set rg = Worksheets(1).Range("A1:B2")
arr(0, 0) = RGB(0, 0, 0)
arr(0, 1) = RGB(0, 255, 0)
arr(1, 0) = RGB(0, 0, 255)
arr(1, 1) = RGB(255, 0, 0)
rg.Interior.Color = arr ' <- これをやりたい
End Sub
など、と書きたいのですが、最後の
rg.Interior.Color = arr
の所でエラー(型が一致しません)が出ます。
(全セレクトエリアが同カラーで指定だと、
rg.Interior.Color =RGB(0,0,0)
などと出来るのですが。。。)
オブジェクトの下のプロパティのプロパティを配列で
指定するうまい方法はありませんか?
セル毎にループで回すと、Excelサイドが重いので、
時間を要してしますので困っています。
分かる方、是非よろしくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
>rg.Interior.Color =RGB(0,0,0)
これは、ありえないです。配列には、受ける側も、同形の配列構造を持っているものでしか、配列構造を受け入れるようにはできておりません。考え方を変えるしかありません。
最初にひとつのパターンを作っておいて、範囲を選択して、プロパティのInterior.Color(または ColorIndex) を換えます。また、同じ色の場合だけを、Union やSelectで選択しておいて、一括して色を設定します。ループを使えば遅くなります。
例:
'-------------------------------------------
Sub Test2R()
Dim arr(2, 2) As Long
Dim rg As Range
Set rg = ActiveSheet.Range("A1:B2")
rg(1, 1).Interior.Color = RGB(0, 0, 0)
rg(1, 2).Interior.Color = RGB(0, 255, 0)
rg(2, 1).Interior.Color = RGB(0, 0, 255)
rg(2, 2).Interior.Color = RGB(255, 0, 0)
'上記をひとつのパターンとしておくなら
rg.Copy Range("A3:B100") '←こうして広げます。
End Sub
No.1
- 回答日時:
Colorの型はLong型のため、残念ながら設定できません。
色を設定する関数がColorしかないのですから、それで対処するしかないでしょう。
要はスピードをあげれれば良いわけですね。どれぐらいのスピードを求めているのか不明ですあ、パフォーマンスを上げる方法としては、以下の2点がありますので、お試しください。
1 セルを変更中は自動計算をOFFにする。
2 セルを変更中は画面更新をOFFにする。
です。それぞれVBAでは
1 Application.Calculation = xlCalculationManual
2 Application.ScreenUpdating = False
です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) excel vbaの配列なんですが・・・ 1 2022/12/26 18:50
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Visual Basic(VBA) VBAの参照先のファイル名をセルに書いて代入したい 2 2022/04/04 13:42
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) vb.netです。2次元配列の要素をFor Eachでひとつづつ取得したい。 4 2022/07/05 11:30
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
このQ&Aを見た人はこんなQ&Aも見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
あなたの人生で一番ピンチに陥った瞬間は?
これまでの人生で今振り返ると「あの時、1番ピンチだったなぁ...」という瞬間はありますか?
-
思い出すきっかけは 音楽?におい?景色?
記憶をふと思い出すきっかけは 音楽、におい、景色 どれですか?
-
VBAにてcolorindexを変数に格納する事は可能でしょうか?
Visual Basic(VBA)
-
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
配列のペースト出力結果の書式について
Visual Basic(VBA)
-
6
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
7
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
8
VBAで配列の計算
Excel(エクセル)
-
9
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
10
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
13
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
14
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
15
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
16
UserForm1.Showでエラーになります。
工学
-
17
エクセルVBA Unionはなぜ遅い?
Visual Basic(VBA)
-
18
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
19
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
20
VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカウントできる、VB
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[エクセル]連続する指定範囲か...
-
エクセルで、絶対値の平均を算...
-
ExcelのINDEXとMATCH関数でスピ...
-
Excel オートフィルタのリスト...
-
読み込みで一行おきに配列に格納
-
配列がとびとびである場合の書き方
-
Excelのセルの色指定をVBAから...
-
表にフィルターをかけ、絞った...
-
INDEX(D:D,L3)の意味は?
-
VBAでの100万行以上のデータの...
-
配列のSession格納、及び取得方...
-
[VBA]改行入りのセルの値を配列...
-
array関数で格納した配列の型を...
-
iniファイルのキーと値を取得す...
-
エクセルでエラーを無視して一...
-
【VBA】ユーザーフォーム リス...
-
C#で配列のフィールドを取得したい
-
バイト配列の構造体変換について
-
VBA 配列に格納した値の平均の...
-
配列に画像を格納
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[エクセル]連続する指定範囲か...
-
エクセルで、絶対値の平均を算...
-
ExcelのINDEXとMATCH関数でスピ...
-
表にフィルターをかけ、絞った...
-
DataSetから、DataTableを取得...
-
Excelのセルの色指定をVBAから...
-
配列がとびとびである場合の書き方
-
array関数で格納した配列の型を...
-
読み込みで一行おきに配列に格納
-
【VBA】ユーザーフォーム リス...
-
Excel オートフィルタのリスト...
-
.NET - 配列変数を省略可能の引...
-
VBA 配列に格納した値の平均の...
-
iniファイルのキーと値を取得す...
-
Split関数でLong配列に格納する...
-
VB6.0 ファイルの一括読込み
-
[VBA]改行入りのセルの値を配列...
-
配列のSession格納、及び取得方...
-
VBAでの100万行以上のデータの...
-
エクセル 条件を指定した標準...
おすすめ情報