EXCEL VBAで複数のセル位置を記憶したい

このQ&Aのポイント
  • EXCEL VBAでセル位置を変数に記憶させる方法を知りたいです。
  • 四つの規則性のないセルに対してOFFSET処理を行いたいです。
  • X1、X2、X3、X4に各セル位置を記憶させたいです。
回答を見る
  • ベストアンサー

EXCEL VBA 複数のセル位置を記憶したいで

こんにちわ。 EXCEL VBAでセル位置記憶方法について質問させていただきます。 あるシート中で以下例の様に4つの規則性のないセル(cells(1,1) cells(3,2),cells(5,4),cells(2,5)に対してOFFSET処理を4回したいので、X1、X2、X3、X4に各セル位置を記憶させたいので以下のように記述しましたが、うまく動きません。 どなたかセル位置を変数に記憶させる方法をご教授いただけませんでしょうか? dim X1 dim X2 dim X3 dim X4 X1 = cells(1,1) X2 = cells(3,2) X3 = cells(5,4) X4 = cells(2,5) 例) Cells(X1).Select ActiveCell.Offset(0, 2).Select Cells(X2).Select ActiveCell.Offset(0, 2).Select Cells(X3).Select ActiveCell.Offset(0, 2).Select Cells(X4).Select ActiveCell.Offset(0, 2).Select よろしくお願い致します。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

X1等をRangeオブジェクトとして宣言し、Set を使って代入します。 例)   Dim X1 As Range   Set X1 = Cells(1, 1)   X1.Offset(0, 2) = "ABC"

yakkun2338
質問者

お礼

mt2008さん 早速のご連絡ありがとうございました。 ご教授いただきました方法でうまくいきました! 本当に助かりました! 超初心者ですがこれからも勉強を続けていきます。 ありがとうございました!

その他の回答 (1)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

Dim X1 As String Dim X2 As String Dim X3 As String Dim X4 As String X1 = Cells(1, 1).Address X2 = Cells(3, 2).Address X3 = Cells(5, 4).Address X4 = Cells(2, 5).Address Range(X1).Offset(0, 2).Select Range(X2).Offset(0, 2).Select Range(X3).Offset(0, 2).Select Range(X4).Offset(0, 2).Select などとかも利用できます。

yakkun2338
質問者

お礼

kmetuさん ご連絡ありがとうございました。 ~.Addressという方法でも良いのですね。大変勉強になります! まだ初心者ですが、これからも勉強を続けていきたいと思います。 この度は本当にありがとうございました!

関連するQ&A

  • エクセルVBAで、複数のブックからデータベースを作りたい

    こんにちは。VBAをはじめたばかりの者です。 変数の使い方で教えていただきたいことがあります。 Dim myFLName As String myFLName = ThisWorkbook.Path & "\001.xls" Workbooks.Open Filename:=myFLName, ReadOnly:=True Workbooks("dbase.xls").Activate Range("A2").Select ActiveCell.Value = 1 ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R3") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("C2") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R2") ActiveCell.Offset(1, -3).Select 001.xls~(連番でない)200.xlsくらいまでのファイルがあり、 同じフォルダにdbase.xlsを作って1ブックから1レコードになるようにしたいと 思います。 こんな感じで1行目はできたのですが、2行目の1列目に「2」を入れ、 2列目からは001.xlsの次のブックを開いてセルの中身をコピーしたいのです。 変数の使い方がよくわからないのですが、教えていただけますでしょうか。 よろしくお願いいたします。

  • EXCEL VBA

    EXCEL VBAで空白行が現れたら「小計」の文字を入力したいと思い以下のように記述しましたが、うまくいきません。どこがおかしいのか教えてください。 宜しくお願いします。 Sub write小計() Dim i As Integer Dim rowcnt As Integer rowcnt = Cells(1, 1).CurrentRegion.Rows.Count Range("B1").Select For i = 1 To rowcnt If Cells(i, 2).Value = "" Then Value = "小 計" ActiveCell.Offset(1).Select Next i End Sub

  • VBAでセル移動を制御したい。

    Excel 2010のVBAでセル移動を行うときは、 ActiveCell.Offset(*, *).Select で移動させるという回答をよく見かけます。 この方法では保護されたセルにも移動してしまって都合が悪いのです。 カーソルキーの挙動と同じ事をしたいのです。 左右の移動に関しては、 ActiveCell.Previous.Select または ActiveCell.Next.Select で実現できるのを確認しました。 上下の移動を実現する方法をどうか教えてください。 よろしくお願いします。

  • エクセルVBAで3つ以上のセルをCellsで選択

    エクセル2003のVBAについてお尋ねします。 行番号についてDim X As Integer の構文を使っている関係で Cells(X, 1) Cells(X, 3) Cells(X, 5)などのようにセルの選択をCellsで行う必要があります。 Cellsで離れ離れの3つ以上のセルを同時に選択するには、どのようにしたらよいのでしょうか? Range(Cells(X, 1), Cells(X, 3)).Select では2つしか選択できず困っています。 よろしくお願いいたします。

  • エクセル マクロ VBA について

    以下はセルB2.C2.D2.E2.F2をアクティブセルから右方向へ入力しています。ここでの入力とは"=" + "セルB2" というものです。一つずつ入力している為マクロが長くなります。短くシンプルなものにしたいです。ご教示お願いします。 ActiveCell.FormulaR1C1 = "=R2C2" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=R2C3" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=R2C4" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=R2C5" ActiveCell.Offset(0, 1).Select ActiveCell.FormulaR1C1 = "=R2C6"

  • エクセル VBA セルのデータを見に行ったのですが・・・

    いつも皆様には大変お世話になっております。 エクセルVBAなのですが・・・ sa = ActiveCell.Row tu = ActiveCell.Column z = Cells(sa + 18, tu + 3).Text MsgBox z If z = "" Then sa = ActiveCell.Row tu = ActiveCell.Column Cells(sa + 18, tu + 3) = a Else sa = ActiveCell.Row tu = ActiveCell.Column Cells(sa + 32, tu + 3).End(xlUp).Offset(1, 0) = a と、入力したのですが z = Cells(sa + 18, tu + 3).Text この zのセルに文字が入っていても MsgBox z  をみても何も入っていないと表示されてしまいます。 何が原因かさっぱりわかりません;; 皆様よろしくお願いいたします

  • エクセルVBAでの関数

    下記、コードでセルに関数を入れるようにしてるのですが 関数で得られた値をセルに反映されるようにしたいのですが Dimを使用してもどう指定してよいのかわからず苦戦しております。 宜しくお願い致します。 Range("F1").Select Do Until ActiveCell.Offset(0, -1).Value = ""       With ActiveCell .FormulaR1C1 = "=MID(RC[-1],2,3)" .Offset(1, 0).Select End With Loop Range("A1").Select Do Until ActiveCell.Offset(0, 2).Value = "" With ActiveCell .FormulaR1C1 = "=RC[11]&RC[5]&Rc[8]&rc[9]&rc[3]" .Offset(1, 0).Select End With Loop

  • excel vbaでの質問になります

    このようなマクロを作成したのですが、セルに数式が入れてあると、どうしてもその下の空白の行に値を入力されてしまいます。 数式が入っているセルにもそのままセルに値を入れたいのですが・・ 宜しくお願いします。 Dim wb1 As Worksheet, r1 As Range Dim N As Integer, i As Integer Dim mycount As Long   Set wb1 = ThisWorkbook.Worksheets("請求書") mycount = Range("B111").CurrentRegion.Rows.Count Cells(111 + mycount, 2).Select ActiveCell.Offset(0, 0).Value = wb1.Range("C60").Value ActiveCell.Offset(0, 1).Value = wb1.Range("C61").Value ActiveCell.Offset(0, 12).Value = wb1.Range("C66").Value ActiveCell.Offset(0, 13).Value = wb1.Range("C74").Value ActiveCell.Offset(0, 14).Value = wb1.Range("C75").Value ActiveCell.Offset(0, 15).Value = wb1.Range("C84").Value ActiveCell.Offset(0, 16).Value = wb1.Range("C85").Value ActiveCell.Offset(0, 20).Value = wb1.Range("C69").Value ActiveCell.Offset(0, 22).Value = wb1.Range("C68").Value ActiveCell.Offset(0, 23).Value = wb1.Range("C76").Value ActiveCell.Offset(0, 24).Value = wb1.Range("C77").Value Exit Sub

  • VBA 現在のセル番地を記憶、復元するコート

    EXCEL 2003を使用しております。 現在のセル番地を記憶しておいて、後にそのセル番地へ戻るというコードを探しております。 Range("AS46").Select   ???????ここに位置を記憶するコード?????????? If InStr(Selection.Value, "◎") > 0 Then ActiveCell.Offset(0, -3).Select Selection.Copy Range("D19").Select If Selection.Value = "" Then PasteSpecial Paste:=xlPasteValues   ???????ここに位置を復元するコード?????????? こんな風な感じで使います。 何卒ご教授よろしくお願いします。 以前、インターネットでやり方を見たのですが、どこにあるかわかりません。 めずらしいコードで、便利だった記憶があります。

  • エクセルで行を非表示にするとアクティブなセルが・・・

    エクセルで行を非表示にするとアクティブなセル?行?がどこかわからなくなり、マクロでアクティブなセルを移動するときにエラーが出ます。 Sub example() ActiveSheet.Range("D3").Select Do Until ActiveCell = 23 If ActiveCell <> "" Then ActiveCell.Offset(1, 0).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -3).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -6).Select Else: ActiveCell.EntireRow.Select Selection.EntireRow.Hidden = True ActiveCell.Offset(0, -6).Select End If Loop End Sub 一番下のActiveCell.Offset(0, -6).Select にエラーが出るのですが、どうすればセルを移動できるでしょうか?