こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBA ヒントを下さい

バージョンはエクセル2000です。

セルの値を判定し条件分岐する、というありふれた処理です。
A1を判定⇒A2を判定・・・のようにオフセットなり変数を使うなりで
次のセルをアクティブにしていっているのですが、
当然セルの数だけ処理時間は増えていきます。

アクティブセル範囲がA1:Z1000みたいなかんじであったとして、
これをRangeオブジェクトとして定義し一気にその中身を処理する
(セルの値が1ならば0にする、のような)ことは出来るのでしょうか。
配列を使えばいいのかとも一瞬思ったのですが、それでも一つ一つ処理することに変わりはなさそうだし・・。

何かヒントをいただければと思います。

投稿日時 - 2007-12-20 12:04:28

QNo.3613433

暇なときに回答ください

質問者が選んだベストアンサー

1例です。
Sub MACRO()
Dim RG As Range
For Each RG In Selection
If RG.Value = 1 Then RG.Value = 0
Next
End Sub

投稿日時 - 2007-12-20 12:53:11

お礼

忘れてました For Each。
早速やってみます。

投稿日時 - 2007-12-20 14:10:26

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

面倒な条件分岐がたくさんある場合は、ワークシート関数で計算して、数値のみカット&ペーストする処理をマクロで実行してみるなどもあります。

投稿日時 - 2007-12-20 12:55:49

お礼

たとえば別シートに数式の入ったものを用意しておいて、という感じでしょうか。
勝手にそのように解釈いたしまして、なるほど、参考にさせていただきます。
ありがとうございます。

投稿日時 - 2007-12-20 14:15:41

ANo.2

>セルの値を判定し条件分岐する、というありふれた処理です。

と書かれた割には、内容が理解できません。

>アクティブセル範囲がA1:Z1000みたいなかんじであったとして、
これをRangeオブジェクトとして定義し一気にその中身を処理する

と言うのは、どのような意味でしょうか?
この範囲のセルから任意の値のセルを探すのですか?(検索)
それとも、どこかに何らか値が入って居るのを探すのでしょうか?(ワークシート関数の応用)

指定範囲のセルに対して同一の処理が必用なら、For Each で処理するのが最速です。

投稿日時 - 2007-12-20 12:53:18

お礼

>For Each で処理するのが最速です。
これだけで充分です。ありがとうございます。

投稿日時 - 2007-12-20 14:11:48

あなたにオススメの質問