• ベストアンサー

VBA 飛び飛びのセルを選択するには

B1からB5のセルの範囲のどこかに○という文字が あるとします。もし、B2とB4に○があったらその隣の A2とA4のセルを選択してコピーしたいのです。 このような場合どのようなVBAのコードを書けばいいのでしょうか? お分かりの方よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

こんな感じでしょうか。VitaminBBさんなら「標準モジュール」に貼り付けることはご存じですよね。 Sub Macro2() Dim r, trg As Range Dim cnt As Integer  For Each r In Range("B1:B5")   If r.Value = "○" Then    If trg Is Nothing Then     Set trg = r.Offset(0, -1)    Else     Set trg = Application.Union(trg, r.Offset(0, -1))    End If   End If  Next r  If Not trg Is Nothing Then   trg.Select  End If End Sub

VitaminBB
質問者

お礼

回答ありがとうございました。 ばっちりでした。

その他の回答 (1)

  • mohenjo
  • ベストアンサー率37% (125/335)
回答No.1

Sub trial() Dim rngS As Range For Each rngS In Range("B1:B5") If rngS.Value = "〇" Then         rngS.Offset(, -1) = rngS.Value End If Next rngS End Sub

VitaminBB
質問者

お礼

回答ありがとうございます。 言葉足らずのところがあったので、補足しますと ○がある隣のAセルに○をコピーするのではなく、 ○がある隣のセルである、A2とA4を同時に選んでコピー したいのです。 A2に”あ”、A4に”う”と入力されていれば、”あ” と ”う”を 同時に選んでコピーし、別のセルに”あ”と”う”を貼り付けたいのです。

関連するQ&A

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • VBA、セルの選択範囲について

    下記のような表を用意し、   A   B  C  D  E 1    1月 2月 3月 合計 2 Aさん 1  2  3  6 3 Bさん 1  2  3  6 4 Cさん 1  2  3  6 5 合 計 3  6  9  18 セルの範囲選択を指定し別シートの任意のセルへコピーをVBAで行いたいのですが、 Aさん、Bさん、Cさんという範囲を選択する為に、合計という文字は含みたくないので、 Range("A2").Select Range(Selection, Selection.End(xlDown).Offset(-1)).Select と記載し、これは出来ました。 同様に、 1月、2月、3月という範囲も同様にxlToRightを使用し選択出来ました。 Range("B1").Select Range(Selection.End(xlToRight).Offset(, -1), Selection).Select しかし、B2:D4の範囲の指定の仕方がわかりませんでした。 データのレコード数は一定ではないのでB2:D4というように範囲を指定する事は出来ません。 そのときに応じてDさん、Eさんと増えたり、4月、5月と増えたりするので。 何か方法があればご指導お願いします。

  • EXCEL2003 選択した範囲のデータの入れ替え

    はじめまして。Excel2003を使っています。 離れたセルを複数選択して(A1~D1)と(C6~D6)双方のデータを入れ替えることはできるでしょうか? ちなみに(A1には数字・文字のデータ B1~D1はセルの色づけだけ)同様に(C6に数字・文字データ B6~D6はセルの塗りつぶしだけ)の入れ替えです。 現在は、コピーして離れたセルに貼り付けてを繰り返して双方を入れ替えしてます。 VBAでコード表を作る能力がありませんので、作っていただければ助かります。 A範囲選択 Ctrl B範囲選択  Enter でデータの入れ替えができれば使いやすいのですが・・・ はじめての質問で説明が解りにくいかもしれませんがよろしくお願いします。

  • エクセルVBA・セルを選択して並べ替えたい

    エクセルVBA・セルを選択して並べ替えたい 以下の質問では、たいへんお世話になりありがとうございました。 http://okwave.jp/qa/q6203452.html 少し関連した質問をいたします。 具体的に言いますと、マウスでセル範囲を選択して、その選択した範囲を並べ替える、というようなイメージです。(マウスでセル範囲を選択してから、マクロを実行します) 以下のコードで言うと Range("○●:○●").の部分が、マウスで選択した範囲というような具合です。 Sub sort1() Range("○●:○●").Sort _ Key1:=Range("d1"), _ Order1:=xlDescending, _ Header:=xlYes, _ Orientation:=xlTopToBottom End Sub 以上、よろしくご教示お願いします。

  • エクセルVBAでセル選択するコードが変

    エクセルのワークシートでVBAでセル選択するコードで理解に苦しむことがあります。 通常、Cells(2, 1)はセル番地で言えばA2セル Cells(4, 1)はセル番地で言えばA4セルです。 しかし、 With .Range("B5:B15")でくくれば  .Cells(2, 1)はセル番地で言えばB6セルだと思います。 .Cells(4, 1) はセル番地で言えばB8セルだと思います。 ところが下記のコードを動かすと、なぜかC10:C12が選択されてしまいます。 この理屈がわかりません。 Sub test02()   With Sheets("Sheet1")     With .Range("B5:B15")       .Range(.Cells(2, 1), .Cells(4, 1)).Select     End With   End With End Sub なお、 .Range(.Cells(2, 1), .Cells(4, 1)).Selectを .Range(“A2:A4”).Selectに書きかえると、希望のB6:B8が選択されます。

  • VBAを使用し、選択肢をオートシェイプで囲うには

    VBA初心者で時々お世話になっております。 セルA1:A2 B1:B2 C1:C2 に自動 切 遠方と表示さています。 この選択肢の一つをダブルクリックすることでオートシェイプの○(塗りつぶし)で囲いたいです。 また、囲う選択肢を変更したい場合(例、切→遠方)遠方をダブルクリックすると切の○が消え、遠方に○が付くようにしたいです。 いろいろ試したのですがうまくいきません。 結合セルだとだめなのでしょうか? どなたか分かる方がいましたら教えて下さい。

  • エクセルVBA・一定の条件でセルを選択したい

    エクセルVBA・一定の条件でセルを選択したい 添付した画像で、毎日、社員番号等が入力されます。 D列の内線番号は空白の場合もありますがA、B、C列は必ず入力されます。 添付画像だと「A1:D5」という具合に選択したいのです。 考え方としては、A列の*行に入力された場合は、「A1:D*」を選択するという具合になるかと思います。 私の目的は、セル範囲を選択したあと、並べ替えたいと考えています。 この並べ替えは自動記録でできそうです。 よろしくお願いします。

  • エクセルVBAで、選択セルを常にC行にする。

    エクセルVBAで、選択セルを常にC行にする。 例:ボタンをクリックすれば、選択しているセルがN25ならC25になり、N7ならC7にしたいのです。 選択セル範囲がB2:N12ならば、一番上を有効として、C2のみを選択範囲としてほしいのです。 VBAで記述するならどのようになるか。ご教示ください。

  • 特定のセルを選択すると別のセルを塗りつぶす方法

    ①セルC5:C36の範囲のどこかを選択していると、セルB3:E3(結合されたセル)とセルB4のセルをオレンジ色に塗りつぶし、範囲以外の場所になると塗りつぶしを解除するVBAなどはどの様にすれば宜しいでしょうか? ②セルE5:E36の範囲のどこかを選択していると、セルB3:E3(結合されたセル)とセルE4のセルをオレンジ色に塗りつぶす方法を追加する場合はどうすれば宜しいでしょうか?選択範囲外になると塗りつぶしは解除させます。 ③セルG5:G36の範囲のどこかを選択していると、セルG3:I3(結合されたセル)とセルG4のセルをオレンジ色に塗りつぶす方法を追加する場合はどうすれば宜しいでしょうか?選択範囲外になると塗りつぶしは解除させます。

  • エクセルVBAについてお尋ね致します。数式が入力されたセルを異なるセル

    エクセルVBAについてお尋ね致します。数式が入力されたセルを異なるセルの条件によって「値」のみ残す方法を模索しております。 使用する列および行の例 列=A、B  行=5~10、15~20、25~30(A列、B列共通) 上記対象セルの内訳 A列(参照セル)=数値 ※空欄の場合もあります B列(変更セル)=数式(Aセル数値 * ○○%) ※B1セルの例:=IF(A1="","",A1*10%) のような数式が記入されております。 (例) Private Sub CommandButton1_Click() ’参照セルの指定 ("A5:A10","A15:A20","A25:A30") のようなコード*** ※現在はAセルの範囲としておりますが、後に変更の可能性を有しますので範囲指定が可能な形式を望みます。 ’変更セルの指定 セル指定のコード*** ※現在はBセルとしておりますが、これも後に変更の可能性を有しますのでA・B・Cのような入力(もしくはA=1、B=2、C=3)による指定可能な形式を望みます。 ’参照セル(Aセル)に数値が入力されている場合、数式から得られた変更セル(Bセル)の値を”値のみ”で残す。 実行コード*** ※参照セル(Aセル)が空欄の場合は変更を望まないので、変更セル(Bセル)は何も致しません。(数式のまま残す) End Sub このようなマクロを望んでおります。 イメージとしては数値がAセルに入力されていた際に同じ行のBセルにおいて右クリックコマンド内〔コピー〕 → 〔形式を選択して貼り付け〕 → 〔値〕の貼り付けを行うことをご想像下さい。 列や行の変更が予想されるので変更が可能なことを望んでおりますが、結果が伴えば他の体裁は気に致しません。 お手数ですがご教授宜しくお願い致します。 以上

専門家に質問してみよう