お世話になります。
環境は、WindowsXpSp3、VB6sp6、MS-excel2003です。
処理内容は「エクセルのセル情報を元に条件判定を行い、結果を出力する」ものです。
現状、cellsオブジェクトの値と色からAND判定を行っています。
cells(r,c).value
cells(r,c).Interior.ColorIndex
色々と調べたところ、配列にすると「劇的に速くなる」ということがわかりました。
想像してみて「確かに」と思い、試してみたところ、range().valueとvariant配列で試したところ約30倍の速度になりました。
(この時はvalueのみで試しました。)
「色情報もインデックスだから・・・」と思い、合わせて試してみました。
しかし、セルの色情報となると、これを配列にすることができません。
エクセルの仕様上どうにもならないものなのでしょうか。
もし「裏技」的なものがあればお願いします。
欲しい情報はcellのvalueとColorIndexが対応した配列です。
ソースは関連する部分だけ書きました。
--------------------------------------
Dim varValueRange As Variant
Dim varColorRange As Variant
varValueRange = Range(Cells(1, 1), Cells(10000,1)).Value
varColorRange = Range(Cells(1,1),Cells(10000,1)).Interior.ColorIndex
--------------------------------------
varValueRangeの方は問題なく配列になります。
varColorRangeがNullになってしまい、配列になりません。
No.1ベストアンサー
- 回答日時:
Interiorの配列は取れない、と決め打ちして・・・(細かく調べていません)
取得する値(A1:A10000)の隣(B1:B10000)に、背景色のインデックス値を並べておく、というのはどうでしょうか?
これなら、背景色のインデックスもA列同様に値の配列として取得することができます。B列は非表示にでもしておけばよいかと。B列がダメならもっと離れたところや別シートでもかまいません。
背景色のインデックスを取得する関数があるかどうかは探していません。私は標準モジュールを追加して、GetBackColorという関数を自作して試してみました。
[Module1]
Function GetBackColor(target As Range) As Long
GetBackColor = target.Interior.ColorIndex
End Function
B1に「=GetBackColor(A1)」と書いてB10000までフィルすればA列の背景インデックスのリストが出来上がります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
【VBA】配列に数式を仕込む方法...
-
VBA listBoxについて
-
VBAでの100万行以上のデータの...
-
SUMPRODUCT関数を用いた最小値
-
エクセル 条件を指定した標準...
-
[エクセル]連続する指定範囲か...
-
配列の受け渡しについて
-
[VBA]改行入りのセルの値を配列...
-
読み込みで一行おきに配列に格納
-
ノーツのデータをVBScriptで取...
-
DataSetから、DataTableを取得...
-
Excel オートフィルタのリスト...
-
VBS 複数ファイル複数行を配列...
-
エクセルVBAで変数をセルに一行...
-
array関数で格納した配列の型を...
-
vba:一覧表から自動転記をしたい
-
.NET - 配列変数を省略可能の引...
-
スプレットシートのGetTextにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
array関数で格納した配列の型を...
-
[エクセル]連続する指定範囲か...
-
表にフィルターをかけ、絞った...
-
VBA listBoxについて
-
エクセルで、絶対値の平均を算...
-
配列がとびとびである場合の書き方
-
DataSetから、DataTableを取得...
-
[VBA]改行入りのセルの値を配列...
-
VBA 配列に格納した値の平均の...
-
配列のSession格納、及び取得方...
-
【VBA】ユーザーフォーム リス...
-
エクセルでエラーを無視して一...
-
SUMPRODUCT関数を用いた最小値
-
Excel VBA 配列の分割について
-
Excelのオートフィルタで抽出し...
-
VB6.0 ファイルの一括読込み
-
Excel オートフィルタのリスト...
-
VBAで指定期間の範囲を抽出し、...
おすすめ情報