EXCEL VBAで複数のセル位置を記憶したい
- 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 よろしくお願い致します。
- yakkun2338
- お礼率77% (325/418)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
X1等をRangeオブジェクトとして宣言し、Set を使って代入します。 例) Dim X1 As Range Set X1 = Cells(1, 1) X1.Offset(0, 2) = "ABC"
その他の回答 (1)
- kmetu
- ベストアンサー率41% (562/1346)
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 などとかも利用できます。
お礼
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 で実現できるのを確認しました。 上下の移動を実現する方法をどうか教えてください。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセル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つしか選択できず困っています。 よろしくお願いいたします。
- 締切済み
- その他MS Office製品
- エクセル マクロ 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での関数
下記、コードでセルに関数を入れるようにしてるのですが 関数で得られた値をセルに反映されるようにしたいのですが 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
- ベストアンサー
- Visual Basic
- エクセル 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 をみても何も入っていないと表示されてしまいます。 何が原因かさっぱりわかりません;; 皆様よろしくお願いいたします
- ベストアンサー
- オフィス系ソフト
- 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
- 締切済み
- Visual Basic
- 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 にエラーが出るのですが、どうすればセルを移動できるでしょうか?
- ベストアンサー
- オフィス系ソフト
お礼
mt2008さん 早速のご連絡ありがとうございました。 ご教授いただきました方法でうまくいきました! 本当に助かりました! 超初心者ですがこれからも勉強を続けていきます。 ありがとうございました!