• ベストアンサー

excel vba  セレクションされている範囲に対する処理

excellでVBAで 今ある列の連続した範囲(仮に$D$2:$D$8とか、$B$3:$B$7)とかがセレクトされているとする。 そのセレクトされている状態をマクロで処理し、そこに例えば$D$2:$D$8の場合は、順に2,3,4,5,6,7,8という数字を表示したい。 $x$n:$x$mでも同様、n、n+1、n+2、---、m(xは何でもいい) Selection.addressというのを使用して処理するのでしょうか、教えてください。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub test() With Selection .Formula = "=ROW()" .Value = .Value End With End Sub このことですか。

taktta
質問者

お礼

はい、そのとおり。うまくいきました。 おかげで解決しました。どうもありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

こんな風にもできるようです。 Sub test()   Dim i As Long   For i = 1 To Selection.Count     Selection(i).Value = Selection(i).row   Next i End Sub

taktta
質問者

お礼

 皆さん、すべてとても参考になりました。どうもありがとうございます。

すると、全ての回答が全文表示されます。
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

下記のようなことですか。 Sub test() For Each c In Selection c.Value = c.Row Next End Sub

taktta
質問者

お礼

はい、そのとおり。うまくいきました。 おかげで解決しました。どうもありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A

  • vba セレクション

    excellでVBAで 今ある列の連続した範囲(仮に$D$2:$D$8とか、$B$3:$B$7)とかがセレクトされているとする。 そのセレクトされている状態をマクロで処理し、そこに例えば$D$2:$D$8の場合は、順に2,3,4,5,6,7,8という数字を表示したい。その回答として Sub test1() For Each c In Selection c.Value = c.Row Next End Sub あるいはSub test2() With Selection .Formula = "=ROW()" .Value = .Value End With End Sub でできるのですが、 順に2,3,4,5,6,7,8という数字を表示のところを(2),(3),ーー,(8)と( )を付けて表示するにはどうすればいいか。

  • vba

    excel VBAで 今ある列の連続した範囲(仮に$D$2:$D$8とか、$B$3:$B$7)とかがセレクトされているとする。 そのセレクトされている状態でTestマクロで処理し、それが例えば$D$2:$D$8の場合は、順に1,2,3,4,5,6,7というように1番から順にセルの個数まで数字を表示したい。($B$3:$B$7  なら順に1,2,3,4,5) Testマクロの記述は? なおTest2マクロでは、順に1,2,3,4,5,6,7のかわりに(1)、(2)、-- としたい。 Test2マクロの記述は? よろしく 

  • エクセルでマクロを使った同一処理を列方向に繰返す?

    VBAの初心者です。マクロを使った同一処理を各列ブロック(3列が1単位)毎に 繰り返して列方向に多数のブロックまで行うVBAはどのようなものになるのでしょうか。 具体的には添付図のような表で、B2店について品名・数量・金額を、4行目~10行目まで、金額の多い順に並べかえた後、金額の合計をセルD2 に記入するマクロ(この記述は下記のようになりましたが)、この処理をE5店、H8店……と3列ずつ例えば20ブロック処理するプログラムはどのようにしたらよいでしょうか(20ブロック目の列番号はBG,BH,BIです)。どなたか教えていただけないでしょうか。 Sub 多い順と合計() Range("B3:D10").Select Selection.Sort Key1:=Range("D4"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Range("D2").Select ActiveCell.FormulaR1C1 = "=SUM(R[2]C:R[18]C)" Range("B2").Select End Sub

  • エクセルVBA セル範囲の選択とループ処理

    VBA歴がまだ浅い学習者です。アドバイスをお願いいたします。 4つのシート、D、X、Y、Summaryがあります。 シートの概要: D:データが大量にあるシート X、Y:個別にデータを張り付けるシート Summary:X、Yを元にシート関数で、結果を出すシート シートDの概要: ABCDEFGHIJKLM 空空空空空空空空空空空空空 ←1行目は空白 空空11111111111 ←データの最初の行は、A列B列のみ空白、 1111111111111 1111111111111 1つ目のデータ群(A2:M14) ※行数は適当、列は固定(A:M) 1111111111111 空空22222222222 2222222222222 2つ目のデータ群 (A15:M23) ※行数は適当、列は固定(A:M) 2222222222222 2222222222222 空空33333333333 3333333333333       ・             ・             ・             ・       空空nnnnnnnnnnn ←データの数は可変する(ただし偶数個) nnnnnnnnnnnnn nnnnnnnnnnnnn nnnnnnnnnnnnn nnnnnnnnnnnnn ◇注意点 データの列数は同一ですが、行数は、同じではありません。 1つ目と2つ目、3つ目と4つ目・・・のデータ群が、比較したいペアのデータです。 やりたい操作:(下記にサンプルコードあり) ・1つ目のデータ群を選択してコピー ・それをシートXのA1より貼り付け ・2つ目のデータ群を選択してコピー ・それをシートYのA1より貼り付け ・(ここで比較結果が、シートSummaryのB2:J2に返される) ・シートSummaryのB2:J2に返された結果をコピーして、同シート、B4より貼り付ける(以後その下に張り付ける) ・3つ目のデータ群を選択してコピー ・それをシートXのA1より貼り付け ・4つ目のデータ群を選択してコピー ・それをシートYのA1より貼り付け ・(ここで比較結果が、シートSummaryのB2:J2に返される) ・シートSummaryのB2:J2に返された結果をコピーして、同シート、B5より貼り付ける(以後その下に張り付ける) ・以下データがなくなるまでループ わからない点: ・データ群のセル範囲を手書きではなく自動(おそらくend(xldown)を使用)で選択させる記述  ※データの見出し行にあるAB列の空白をうまく使って書けるのではと考えています。 ・ループ処理の記述 どうかご教授お願いいたします。 補足が足りない場合は、お伝えください。 サンプルコード Sub テスト() Sheets("D").Select Range("A2:M14").Select  ’??? Selection.Copy Sheets("X").Select ActiveSheet.Paste Sheets("D").Select Range("A15:M23").Select '??? Application.CutCopyMode = False Selection.Copy Sheets("Y").Select ActiveSheet.Paste Sheets("summary").Select Range("B2:J2").Select Application.CutCopyMode = False Selection.Copy Range("B4").Select '??? ActiveSheet.Paste End Sub

  • Excel VBA 計算範囲の変更について教えてください。

    こんばんは。とても困っています。 下記のような表で=A1&B1&C1の計算式を入れ、A1とB1を絶対参照にして$A$1&$B$1&C1としてD3までオートフィルをかけます。 そしてD4は =$A$4&$B$4&C4のように絶対参照しているセルを変更したいのです。たくさんありすぎて参照する範囲を変更するのにとても大変な思いをしています。VBAでどのようにすればよいのか教えてください。   |A    B   C     D ------------------------------------- 1| 1T  11L   A    1T11LA (=$A$1&$B$1&C1) 2|          B    1T11LB (=$A$1&$B$1&C2) 3|          C    1T11LC (=$A$1&$B$1&C3) 4| 2T  20L   A    2T20LA (=$A$4&$B$4&C4) 5|          B     2T20LB (=$A$4&$B$4&C5) 6|          C    2T20LC (=$A$4&$B$4&C6) 7| 3T  31M   A    3T31MA (=$A$7&$B$7&C7) 8|          B     3T31MB (=$A$7&$B$7&C8) マクロで記録させたらところ下記のようになりました。 Sub 4行置きに参照範囲を変更する() Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=RC[-3]&RC[-2]&RC[-1]" Range("D1").Select ActiveCell.FormulaR1C1 = "=R1C1&R1C2&RC[-1]" Range("D1").Select Selection.AutoFill Destination:=Range("D1:D3"), Type:=xlFillDefault Range("D1:D3").Select Range("D4").Select ActiveCell.FormulaR1C1 = "=R4C1&R4C2&RC[-1]" Range("D4").Select Selection.AutoFill Destination:=Range("D4:D6"), Type:=xlFillDefault Range("D4:D6").Select Range("D7").Select ActiveCell.FormulaR1C1 = "=R7C1&R7C2&RC[-1]" Range("D7").Select Selection.AutoFill Destination:=Range("D7:D9"), Type:=xlFillDefault Range("D7:D9").Select End Sub ◎初心者なのでVBAにたくさんコメントを入れていただくと助かります。 宜しくお願い致します。

  • エクセル VBAマクロ セルの単純移動

    基本的な質問ですが、よろしくお願いします。 エクセルのVBAで、Selectセルを1つだけ上下左右に移動させることを ”汎用的に書く”としたらどのようにすれば良いでしょうか? 例えば、Selectセルを一番上や、一番下、へというのであれば、 Selection.End(xlUp).Select Selection.End(xlDown).Select 一番右や、一番左なら、 Selection.End(xlToRight).Select Selection.End(xlToLeft).Select のように書いて、実行できます。 それでは、今いる所のすぐ隣りのセルへ移動させるということを 同じように表現するには、どのようにしたら良いでしょうか。 事の発端は、 マクロの自動記録を使って、セルを移動していっても、 Range("A1").Select Range("B1").Select Range("B2").Select Range("C2").Select Range("C3").Select : のように、絶対セル位置で記録されてしまうため、 同じような処理を順に隣りや後の行・列に向かって繰り返すような処理を 書こうとしたときに、汎用的には動いてくれないところからです。 参考になるページを自力では見つけられませんでした。よろしくお願いします。

  • エクセルVBA での繰り返し処理について

    エクセルVBA での繰り返し処理について 以下の作業を20回繰り返そうとしています(別シートから持ってきた値を「行列を入れ替えて」貼り付け)    Sheets("初期設定").Select Range("A6:C6").Select Selection.Copy Sheets(TS).Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True   「初期設定」シートの方は1行ずつ並んでいるので、「2回目」の「2行目」は   「 Range("A7:C7").Select」になり、   「TS」シートの20行後に貼り付けたいので、「2回目」の「5行目」は   「Range("B24").Select」 になります   これを、for ~ next を使い、以下のようにしてみましたが、上手くいきません。    For j = 6 To 26 For k = 4 To 384 Step 20 Sheets("初期設定").Select Range(Cells(j, 1), Cells(j, 3)).Select Selection.Copy Sheets(TS).Select Cells(k, 2).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Next k Next j  1分程度ループし続けた後、「初期設定」シートの最終行だけが貼り付けられてしまいました。 どこをどのように直せばいいのかお教えください。 よろしくお願いいたします。

  • エクセル2003VBAから、2010VBAへの移行

    今まで職場で、WindowsXP+Excell2003VBAで業務シートを8年間作成とび保守をしていました。 昨日、職場パソコンがWindow7+Execll2010VBAに移行されました。 まずVBAの入り口がわからず、戸惑ってしまいました。 職場でVBAを知っているの私だけで、聞ける相手がいません。 初歩的な質問で申しわけありません。 本来はマニュアルを読むべきでしょうが、まだ手元にありません。 (1) Excell2003VBAは、ツール(T)>マクロ(M)>VisualBasicEditorで、VBA開発環境画面へ飛ぶ事が出来ます。 Excell2010VBAでは、どこからVBA開発環境へ入っていくのでしょうか? (2) 2003VBAで作成したシートを、Excell2010環境で立ち上げると、有効・無効とか互換性がないとか 色々出てきます。変換ツール等はあるのでしょうか? (3) Excell2003VBAとVB6のマニュアルは数冊持っています。 Excell2010VBAのマニュアルも揃えた方がいいでしょうか? どうぞ、よろしくお願いします。

  • Excel VBAについて

    Excelで、指定したセル範囲の外枠に罫線を引き四角形を作り、B1の数字を変えていくと四角形を横に描いていくというマクロを作成したのですが、B1の数値を変えてマクロを実行すると以前に描いた四角形が残ってしまいます。これを数値を変えてマクロを実行すると、以前の四角形を消して新たに四角形を描くにはどうすればよいのでしょうか。何かいい方法があれば教えてください。宜しくお願いします。以下にコードを示しておきます。 Public Sub Main_Code() a = ThisWorkbook.Worksheets("Sheet1").Range("B1") If a = 2 Then Range("I26:K35").Select Selection.BorderAround Weight:=xlMedium Range("B1").Select ElseIf a > 2 Then Dim i As Integer For i = 3 To a Range("I26:K35").Select Selection.BorderAround Weight:=xlMedium Range("I26:K35").Select Selection.Copy Cells(26, 3 * i + 3).Select ActiveSheet.Paste Application.CutCopyMode = False Range("B1").Select  Next i  End If End Sub

  • エクセルVBAでの範囲選択について

    はじめまして。 VBAを勉強し始めたばかりなのですが、 sub test() Range("A1:M10").Select Selection.WrapText=True End Sub とあるものを、 『InputBox』を使わずに自由に範囲選択をするように するにはどういう方法があるのですか?

このQ&Aのポイント
  • PX404AはWIFI非対応ですが、直接ルーターに接続することは可能ですか?
  • PX404AはWIFI非対応であり、WIFIではなく直接ルーターに接続することができますか?
  • PX404AはWIFIに非対応していますが、直接ルーターに接続することはできるのでしょうか?
回答を見る

専門家に質問してみよう