• ベストアンサー

VBAでの選択範囲内の削除方法。

Excel2003でVBAを使っています。 まず、VBAである範囲(例えば、A1からK20)を指定した後、その範囲内にある値の中で、aaaとbbb以外の値のセルを空白セルにしたいのですが、どのようにしたらよいのでしょうか? aaaとbbbの入っているセルを空白セルにする場合と、aaaとbbb以外の値が入っているセルを空白セルにする方法を教えてください。 宜しくお願いします。

  • RRHH
  • お礼率62% (34/54)

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.2

こんにちは。 範囲選択もコードでする場合 --------------------------------------------- Sub Test01()  Dim Rng As Range  For Each Rng In Range("A1:K20")    If Rng.Value = "aaa" Or Rng.Value = "bbb" Then      Rng.Value = ""    End If  Next Rng End Sub --------------------------------------------- 範囲選択を手動でした場合は  For Each Rng In Range("A1:K20") を  For Each Rng In Selection   とする ---------------------------------------------- また、aaa,bbb以外の時は    If Rng.Value = "aaa" Or Rng.Value = "bbb" Then    Else      Rng.Value = ""    End If などとする 以上です。  

RRHH
質問者

お礼

この方法が、私の知りたかったものズバリです。 分かりやすくて、とても助かりました。 本当に有難うございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

IF判別の方がよいかもしれないが、Findを使う方法をやってみました。いつか参考になるでしょう。 Sub test02() Worksheets("sheet2").Activate Set a = Range("a1:k20").Find("aaa") If a Is Nothing Then Exit Sub a.Value = "" a.Activate While Not a Is Nothing Set a = Range("a1:k20").FindNext(ActiveCell) If a Is Nothing Then Exit Sub a.Value = "" a.Activate Wend End Sub aaa,bbb を配列に入れて繰り回せば、aaaかbbbを空白にできます。それら以外を空白にすることができませんが。

RRHH
質問者

お礼

こんな方法もあるんですね。 今回は、aaaとbbb以外のセルを空白にする方が重要だったので今回は使いませんが、いろいろな方法を知っていた方が、何かの時に使えると思います。 とても助かります。有難うございました。

  • Traja
  • ベストアンサー率19% (107/546)
回答No.1

自分で動作確認していません。 そのものズバリでもありません。 1.rangeオブジェクトで範囲を指定し 2.For Each文で、単一のセルを順に特定し 3.セルの値を判定し、然るべき処理を行う といった手順になろうかと思いますが この辺をヘルプを使い試行してみてください。

RRHH
質問者

お礼

この手順は、なんとなく分かっていたのですが、でも、何を使えばいいのか分からなかったのです。 >2.For Each文で、単一のセルを順に特定し For Eachですね。調べてみます。 有難うございました。

関連するQ&A

  • VBAで行範囲を抽出して隣のセルに貼り付ける

    Excel VBA初心者です。 A列にある以下のデータの「aaa」から「bbb」の範囲を検索して 切り取り、隣のセル(B列)に貼り付けるマクロを教えてください。 実際のデータは「aaa」から「bbb」の範囲のデータが500個くらい あるので、隣のセルに貼り付けていく作業をマクロで処理したいと 考えています。 ・マクロ処理前 列A aaa data0 data1 data2 bbb datax ------------ aaa data3 data4 data5 bbb datay ------------ aaa data6 data7 data8 bbb dataz ・マクロ処理後 (処理前のdatax、datay、datazは列Aに残ったままで構いません) 列A  列B   列C    列D 空白  aaa   aaa   aaa 空白  data0   data3   data6 空白  data1   data4  data7 空白  data2   data5  data8 空白  bbb   bbb  bbb

  • EXCEL 変数を使ったセルの範囲指定

    EXCEL2003です。 セルの番地を変数aaaとbbbにそれぞれいれています。 (例:aaaは"A1"のセル、bbbは"A4"のセル) 範囲を指定する(Range("A1:A4")のように)のに、 変数でする場合は、どのような記述にすればよいのでしょうか。 よろしくお願いします。

  • VBA UsedRangeで選択範囲を取得したい

    セルに aaa bbb ccc と入力し、vbaで Sub Macro() MsgBox ActiveSheet.UsedRange End Sub を実行すると、 型が一致しません。(Error 13) と言うエラーになります。 "$A$1:$D$3"と言うような値を取得したいのですが、どのようなVBAにすればいいのでしょうか? ご回答よろしくお願いします。

  • 複数行列のセル範囲から検索する方法

    Excel2003を使っています。 A1:Z80のセル範囲から指定した値を検索し、その値の番地を取得する方法を教えてほしいです。 重複する値は入力されていませんが、空白セルもあります。 他のシートの任意のセルに検索したい値を入力し、見つけた番地にたいするリンクを設定したいのです。 VBAでも関数でもいいので、力を貸して下さい。

  • セル範囲と図形を指定してVBAで削除するには?

    エクセルで一枚のシートに複数のオートシェイプ(○、△、□)を使用したものがあります。 オートシェイプを使用しているセルの範囲は(A1:G20)と(AP1:AX20)の二箇所なのですが、 VBAで(A1:G20)の範囲にあるオートシェイプ(○のみ)を削除する事はできますか? (A1:G20)の範囲にあるオートシェイプは全体がこのセル範囲に入っています。 手動で、オブジェクトの選択で範囲指定をした後削除という方法もあるのですが この削除の作業の前後に他のVBAを使用しているので、 VBAで削除が出来ればと思います。 いろいろ検索したのですが、セル範囲もしくは図形のいずれかを指定して 削除する方法はあったのですが、両方を指定してのVBAがわかりませんでした。 よろしくお願いいたします。

  • VBAを用いて手動で選択した範囲の数式の置き換え

    エクセル2007にて手動で数値入力をしています。 効率の悪い方法なのですが、 入力方法自体はこのまま、変えずにやりたいと思っています。 入力内容は、例えば 100x20ほどのセルのあるところ、空白のところに「2」と入れたり しばらく後に先ほどの「2」のところに「=2+4」と付け足したり さらにしばらく後に「=2+4+5」と付け足したりしています。 「したいこと」はある程度入力が進んだところで、 100x20ほどのセルを「マウスなどで選択」し、その選択した範囲のセルの中身の 「=2+4+5」のセルを計算し「=11」に置き換え、(左に”=”を付けたい) 「3」や「=3」「=+3」のセルを「=3」に置き換え、(やはり左に”=”を付けたい) ただし「空白」のセルは「空白」のままにして置きたいのです。 Q1)上記の「したいこと」をVBAでできるでしょうか Q2)Q1に加えて 「0」のセルは「=0」と置き換えられるでしょうか Q3)間違ってイコール無しで入力した「1+2+3」も計算して「=6」(左に”=”)にできるでしょうか Q4)VBAで実際に動くものを組んでもらえないでしょうか 後々、最終的には自分で勉強してVBAを組めるようになりたいのですが 今必要なのは上記の操作のみなので、実際にVBAで作成したものが欲しいです。 現在はマウスで選択、形式選択(値)貼り付けして、手動でその都度”=”を付け足しています

  • VBAにて範囲選択およびコピーの方法について

    連休中失礼いたします。VBA初心者です。 VBAにて範囲選択の方法およびコピーの方法について教えてください。 (1)範囲選択の方法  まず最初の条件としてD列における値が1.0以上(数値表記は少数点)の場合に限り、 それに該当する行をコピー(A~D列)したいのですが… この方法をVBAの式で表したいのです。  範囲選択として求めたい範囲は、下表で行くとRange(”A3:D6”)の範囲を選択したいのです。  ※D列における値が1.0以上の条件の指定までは、何とかできてそうな感じなのですが、   その条件を満たす、範囲選択がうまくできません。 (2)コピーの方法  (1)で選択した範囲を、選択sheetを変更して貼り付けたいのですがどのようにしたらよろしいでしょうか??       A列     B列     C列      D列 1行    13     10      10      0.5 2行    10     8       7       0 3行    11     9       7       1.0 4行    9      25      18      1.5 5行    8      43      23      1.5 6行    7      12      23      1.0 7行    6      23      43      0.5  8行    15     23      54      0 … …

  • 他のセルを表示させる方法

    Excel2002です。 セルA1にAAA、セルB1にBBB、セルC1にCCCと値が入っています。 セルA2には時刻が入っていて、この時刻が指定の時刻範囲にはいると セルA3にセルA1、セルB1、セルC1のいずれかを切り替えて表示させたいのですがうまくいきません。 マクロを使わずに時刻を判断してセルの表示を変える事は可能でしょうか。 ご教示下さい。

  • VBAで範囲指定するのですが・・・

    VBA初心者です。 表題にあるようにあるエクセルデーターの範囲を指定したいのですが、 次の条件では範囲特定させるのはやっぱり無理でしょうか。 説明だけでは分かりにくいと思うので添付データーもご参照のうえアドバイスお願いします。 ・列は一定。 ・行は不定。例で言うとイベント数は増えたり減ったり。 ・イベントに対してaaa・bbb・cccが対象であるかどうかを●で表示する。 ・イベントのない枠はゼロ表示される。 ・選択したいセルの横にも文字列がある。 普通ならRange("A1", Cells(Worksheets("Book1").Rows.Count, 4).End(xlUp)) みたいな感じで範囲指定なんですかね? ただ、●が付いたりつかなかったりで右端のセルの特定がそれによって左右されますよね。 たとえば、イベントCのcccに●がついていれば上記の範囲指定で"D6"をえらんでくれるのですが、●が付いていないとき"D5"を右端のセルとして認識して6列を範囲にいれてくれないですよね。 なにかいい方法ないですか? 例えば"0"をValueと認識させない方法があれば、Range("A1", Cells(Worksheets("Book1").Rows.Count, 1).End(xlUp).offset(3,1))とできると思うのですが、そんなこと可能なのかまったくわかりません。 添付データーの黄色の部分を選択したいということです。 よろしくお願いします。

  • ★エクセル VBA 指定された範囲の空白セルに0(ゼロ)を代入したい。

    ★エクセル VBA 指定された範囲の空白セルに0(ゼロ)を代入したい。 範囲は ”セル範囲”という名前で取得しましたが、その中にデータの入っていない 空白のセルに0を代入したいのです。 xlCellTypeBlanksを使うといいのでしょうか? 会社でのデータ処理で必要なので困っています。 初心者なのでよろしくお願いいたします。