• ベストアンサー

エクセルVBAセルの選択、挿入でズレた時に自動修正

エクセルのVBAで、セルA1を選択します Sub Macro1() Range("A1").Select End Sub 別の作業でA列に1行挿入すると 自動的にセルB1を選択してくれないと困るのですが、どうすれば良いのですか?

  • 48946
  • お礼率54% (480/878)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

方法1:基本 セレクトしたいA1セルに、例えばシルシとして「ここ」と記入しておく sub macro1() cells.find("ここ").select end sub のようにシルシを探してそこを選ぶ 実際のシルシはあなたの実物のエクセルに応じて適切に自分で工夫する。 方法2:応用 セレクトしたいA1セルに、名前の定義で「ここ」という名前を定義しておく sub macro2() range("ここ").select end sub のように、そこを名指しで選択すればいつでもどこに行ってても選んでくれる。

48946
質問者

お礼

そんなやり方があったんですね 有難う御座います

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率65% (1601/2437)
回答No.2

No1の補足です。 行挿入ですから自動でB1選択じゃなくてA2選択ですよね。そのつもりで回答してます。 あと、たぶん以下のような処理でいけるような話ではないと思いますが、一応限定した環境の話ならということで。 Selectしたセルの上にしか挿入しないのであれば、たとえば10行目は使わないし10行目以降にはデータがないという状態でしたら10行目に何かしらのデータを記載しておいて絶対に消さないようにしておき(たとえば「消さない」とか書いておく) 下記のようなコードにしておけば(最初はA1を選択している例です) y = Range("A" & Rows.Count).End(xlUp).Row - 9 Range("A" & y).Select 1行挿入してもコードは修正せずにA2が選択されるようになります。

  • kkkkkm
  • ベストアンサー率65% (1601/2437)
回答No.1

エクセルのVBAでは、手動で列や行の挿入をした場合、セル番地を自動で補正してくれる機能はありませんので、手作業で書き換えるしかありません。VBAで挿入をする場合でも、その部分に適したセル番地を変更するコードを記載しておくしかありません。 たとえば y = 1 x = 1 Cells(y, x).Select としておいて、挿入のコードを書いた後で(上に1行挿入なら) y=y+1 Cells(y, x).Select などのようにしておくとかです。

関連するQ&A

  • エクセル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が選択されます。

  • EXCELのVBAセル操作について

    こんばんは、エクセルのセルの操作(vba)についてお知恵をお貸しください。 シートBに配置してあるボタンをクリックすると、シートAの”A10”に飛ぶVBAを作りました。 ここで、問題になったのがシートAの5行目に行を挿入した時に シートBに配置してあるボタンをクリックすると、シートAの”A10”に飛ぶのですが A10の内容は行を追加した影響でA9の内容が表示されています。 手作業でA10をA11にすればいいのですが、 このシートAには、このようなモジュールがたくさん貼ってありA10より下の全て行を 手作業で修正するのはしんどいので何かいい案はありますでしょうか? Sub a10モジュール() Sheets("worksheeta").Select Range("A10").Select End Sub

  • エクセルで画像の挿入マクロについて

    エクセルのB列にJANコードが入力してあり、 (1)セル内容コピー  (2)C列にそのJANコード.emfのファイル名画像を挿入 (3)次の行に移る この作業をマクロ記録してみたところ内容が下記の様になりました。 Sub JAN() ' ' JAN Macro ' ' Keyboard Shortcut: Ctrl+Shift+Q ' Selection.Copy ActiveCell.Offset(0, 1).Range("A1").Select ActiveSheet.Pictures.Insert( _ "C:\Users\user\Documents\JAN_バーコード\1234567890123.emf").Select ActiveCell.Offset(1, -1).Range("A1").Select End Sub 挿入する画像のファイル名が最初のものに固定されてしまっているのですが、 これを次のセル内容に自動で変える為にはどうすればよいでしょうか。

  • VBA 表の1つ下のセルを選択する

    EXCEL2003のVBAを使っています。 オートフィルタで抽出させた表があります。 入力されているセルの、1つ下のセルを選択するにはどうしたら良いでしょうか。     A 1  あああ  2  あああ  5  あああ  1行目から19行目までの列の中で、"あああ"だけをオートフィルタで抽出している 10  あああ  14  あああ   16  あああ  20   ※ ←ここを選択したい。 Range("A65536").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select これだとA17のセルが選択されてしまいます。 表全体の1つ下のセルを選択する方法はあるでしょうか?

  • エクセルVBAでジャンプ(セル選択)?

    いつもお世話になっております。 エクセル(2000)の特定のセル選択の方法について教えてくださいませ。 Sub TEST01() Range("A1:A20").SpecialCells(xlCellTypeBlanks).Select End Sub これで、指定範囲内の空白セルをSelectできますね。 Sub TEST02() Range("A1:A20").SpecialCells(xlCellTypeFormulas, 1).Select End Sub これで、指定範囲内で、数式により数値が表示されたセルをSelectできますね。 質問1 では、指定範囲内で、数式により何も表示されないセルをSelectできますか? 空の文字列( ="" )だから、SpecialCells(xlCellTypeFormulas, 2)でSelectできますが、これでは他にも数式により文字が表示されたセルもSelectされてしまいます。 質問2 数値がマイナスのものだけをSelectする方法があるでしょうか? 別に、「ジャンプ」にはこだわりませんが、データ件数が多いので For NextでLoop 以外の方法をご教示いただけたら幸いです。

  • エクセル VBAで複数行の選択

    エクセル2002使用です。 VBAで変数を使って複数行の選択で、6行目から9行目までを選択したいのです。 sub macro2() Dim rw As Integer rw=8 Rows("rw - 2:rw + 1").Select end sub だとエラーになります。 Rows("6:9").Select のようにしたいのですがどこが悪いのでしょうか? よろしくお願いします。

  • エクセルのマクロ 選択したセルを指定した範囲へ値貼

    お世話になります。 自動記録したものをどのように修正したら、実行時に選択しているセルの値を、3行下、1つ左のセルから8行目までに貼り付けることができるよう書き変えられますでしょうか。 初心者で何に手を付けて良いのか分からず。どなたかご教示いただけませんでしょうか。どうぞよろしくお願い致します。 Sub 選択したセルを指定した範囲へ値貼り付け() ' ' Macro1 Macro ' ' Range("I9").Select Selection.Copy Range("H12:H19").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub

  • Excelのセルのフォントサイズを自動調整

    Excel97VBAの質問です。 セルの値が長すぎて表示しきれない場合は、フォントサイズを調整したい。 Sub Macro1() With Sheet1 .Columns("A").ColumnWidth = 1 .Range("A1").Value = 1 .Range("A2").Value = 12 .Range("A3").Value = 123 .Range("A4").Value = 1234 End With End Sub この場合、A2~A4の表示が潰れます。 フォントサイズを例えば、 Sub Macro2() .Range("A2").Font.Size = 7 .Range("A3").Font.Size = 5 .Range("A4").Font.Size = 3 End Sub と設定すれば潰れずに値が表示されます。 このようなフォントサイズの最適値を自動的に設定したい。 よろしくご指導お願いします。

  • VBAで行を挿入する

    VBAを始めた初心者です。 Exel2002使用です。 VBAでA列の4行目から10行目に行の挿入をできるようにしようと下記のように書きましたが、Rows("i:i").Selectの部分でデバックがかかってしまいます。間違っている理由がわからないのですがよろしくお願いします。 また、DO While Loopステートメントを使ってA列が空白になるまで(例えばA4セル以下の)行を挿入とする場合の方法も教えていただけましたら幸いです。 Sub 4行目から10行目まで() Dim i As Integer For i = 4 To 10 Cells(i, 1).Value = i Rows("i:i").Select Selection.Insert Shift:=xlDown Next i End Sub Sub 4行目から空白になるまで() Dim i As Integer Range("A4").serect Do While activecell.value = "" Cells(i, 1).Value = i Rows("i:i").Select Selection.Insert Shift:=xlDown activecell.offset(1,0).select Loop End Sub

  • Excelのセル選択範囲の指定について

    Excelのセル選択範囲の指定について d = Range("A65536").End(xlUp).Row Range("A1:K" & d).Select これでやると A1からk列のデータの最後の(データの入っている行)までを選択しますが このk列というところを n = ActiveSheet.Range("A1").End(xlToRight).Columnを使いKでなくデータのある列nを使った表現に変えたい。どうすればいいか。

専門家に質問してみよう