• ベストアンサー

Excell : 現在のカーソルがある行の特定の列に値を書き込むマクロ

現在のカーソルがある行の特定の列に値を書き込むマクロの書き方を教えてください。以下は20行めのA列、B列にa, b を書き込むものですが、最初のRange("A20").Selectをカレント行に設定するコードを書けばいいのでしょうか?具体的な記述を教えてください。よろしくお願いします。 Sub Macro4() Range("A20").Select ActiveCell.FormulaR1C1 = "a" Range("B20").Select ActiveCell.FormulaR1C1 = "b" Range("C20").Select End Sub

  • zuntac
  • お礼率81% (307/377)

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.6

以下のように色んな方法があります。   Sub Macro4() Cells(ActiveCell.Row, 1).Value = "a" Cells(ActiveCell.Row, 2).Value = "b" End Sub Sub Macro5() Cells(ActiveCell.Row, "A").Value = "a" Cells(ActiveCell.Row, "B").Value = "b" End Sub Sub Macro6() Cells(ActiveCell.Row, "A").Value = "a" Cells(ActiveCell.Row, "A").Offset(, 1).Value = "b" End Sub Sub Macro7() Range("A" & ActiveCell.Row).Value = "a" Range("B" & ActiveCell.Row).Value = "b" End Sub Sub Macro8() Range("A" & ActiveCell.Row).Value = "a" Range("A" & ActiveCell.Row).Offset(, 1).Value = "b" End Sub 尚、それぞれのValueは削除可能ですが付けておいた方がベターです。    

zuntac
質問者

お礼

回答ありがとうございます。 勉強になりました。感謝です。

その他の回答 (5)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.5

Range や Cells で、最初から記入位置をしてしても構いません。 Sub Macro4() Range("A20").FormulaR1C1 = "a" Range("B20").FormulaR1C1 = "b" Cells(20, 3).FormulaR1C1 = "c" End Sub

zuntac
質問者

お礼

回答ありがとうございます。 固定の内容をカーソルを置いた位置に書き込みたい のでActiveなrowを知る必要があります。

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.4

シートのコードに Private Sub CommandButton1_Click() a = ActiveCell.Row Cells(a, 3).Value = "a" Cells(a, 4).Value = "b" End Sub でコマンドボタンを押せばアクティブなセルのC列にa,B列にbがはいります。

zuntac
質問者

お礼

回答ありがとうございます。

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

シートのコードに Private Sub Worksheet_SelectionChange(ByVal Target As Range) a = ActiveCell.Row Cells(a, 3).Value = "a" Cells(a, 4).Value = "b" End Sub でアクティブになったセルのC列にa,B列にbがはいります。

zuntac
質問者

お礼

ていねいな回答をありがとうございます。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.2

Sub Macro4() Range("A" & ActiveCell.Row).Value="a" Range("B" & ActiveCell.Row).Value="b" End Sub

zuntac
質問者

お礼

回答ありがとうございます。 さっそく試してみて、うまくいきました。 シンプルな書き方で分かりやすいですね。

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

現在の行は(カーソルのある行) ActiveCell.Row で求まります Sub aaa() row1 = ActiveCell.Row '現在の行を求める Cells(row1, 1) = "aaa" 'A 列にいれる Cells(row1, 2) = "bbb" 'B 列にいれる Cells(row1, 3) = "ccc" 'C 列にいれる End Sub

zuntac
質問者

お礼

回答ありがとうございます。 さっそく試してみて、うまくいきました。

関連するQ&A

  • Excelでマクロを使いセルの内容をコピー貼り付け

    A1セルに111と入力してあるとします。 この時B1にaaa111aaaと入力するマクロを作りたいです。 A1に222があるとB1はaaa222aaaと入力したいです。 これをマクロで作ったのですが、次のようになり、A1の内容にかかわらず常にaaa111aaaとなってしまいます。 Sub Macro1() Range("A1").Select ActiveCell.FormulaR1C1 = "111" Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Range("B2").Select Application.Goto Reference:="Macro2" End Sub これのいらない行を削除し、コピーはA1の内容となるように修正して次のようにしました。 Sub Macro1() ActiveCell.FormulaR1C1 = Range("A1") Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Application.Goto Reference:="Macro2" End Sub まだペーストするときにA1の内容とならず直接入力となっています。 これをどう変更すればいいでしょうか?

  • データの入っている行だけを繰り返し処理マクロについて

    データの入っている行だけを繰り返し処理したく以下マクロ記述しましたが上手くいきません。宜しく御願いします。 E列に空白列を挿入。 E3に「月」と入力しE4にD4の年月日から年月だけを取り出すように組みたく下記記述したのですがエラーになってしまいました。 どのように記述したら良いでしょうか? ..A..B..C...D.........E.......F 1 2 3 * * * 納期 月    * 4 09.10/08  09.10 5    記 Sub 年月test() ' ' 年月test Macro ' マクロ記録日 : 2009/11/15 ユーザー名 : TH ' ' Columns("E:E").Select Selection.Insert Shift:=xlToRight Range("E3").Select ActiveCell.FormulaR1C1 = "月" ActiveCell.Characters(1, 1).PhoneticCharacters = "ツキ" Range("E4").Select Do Until ActiveCell.Offset(0, -1).Value = "" With ActiveCell .Value = .FormulaR1C1 = "=LEFT(RC[-1],5)" End With Loop End Sub

  • ■ エクセルマクロについてです。初級?

    エクセルのマクロでデスクトップにあるエクセルファイルを開くにはどうしたらいいのでしょうか? 現在は、エクセルファイルA.xls B.xlsという2つを開いていて、マクロを実行することができるのですが、これをA.xlsだけ開いている上体で、実行したいのです。 なので、デスクトップに置いてあるB.xlsファイルを開くコマンド?というか、関数が知りたいのですが、どうしたらいいのでしょうか? 現在はこのような感じになっております。 Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2008/9/10 ユーザー名 : ' ' ActiveCell.FormulaR1C1 = "12345" Range("G17").Select ActiveCell.FormulaR1C1 = "129876" Range("G18").Select Windows("B.xls").Activate Range("N16").Select ActiveCell.FormulaR1C1 = "8/4/2008" Range("N17").Select ActiveWorkbook.Save Range("O16").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • マクロについて教えてください

    マクロ初心者です。 A~D列の表が少ない時100行、多い時400行あり、同じ操作を何回か繰り返すため、できればマクロで処理したいと思っています。 マクロ記録で作成したのですが、最終行が一定ではないため行数が増えると上手く作動しません。 どこを修正したらいいでしょうか。ご教示いただければ幸いです。 Sub Macro1() ' ' Macro1 Macro ' ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""集計"","""")" Range("G2").Select Selection.AutoFill Destination:=Range("G2:G4"), Type:=xlFillDefault Range("G2:G4").Select Range("H2").Select ActiveCell.FormulaR1C1 = "=SUMIF(R2C1:R13C1,RC[-1],R2C2:R13C2)" Range("H2").Select Selection.AutoFill Destination:=Range("H2:H4"), Type:=xlFillDefault Range("H2:H4").Select Range("H5").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" Range("H6").Select End Sub ちなみに作成したいマクロ 1.F列にA列の「集計」を取り出して、G列にF列の「集計」文字を取り除く。 2.H列にB列「数」を計算する 3.H列の最終行に合計を出す。

  • エクセルVBAが書ける方へ

    お世話になります。 下記VBAはB19からB28までのデータをA11:12の横列に貼り付けさせる内容です。 Sub 特価() ' ' 特価 Macro ' ' Range("A11:A12").Select ActiveCell.FormulaR1C1 = "=R[8]C[1]" Range("B11:B12").Select ActiveCell.FormulaR1C1 = "=R[9]C" Range("C11:C12").Select ActiveCell.FormulaR1C1 = "=R[10]C[-1]" Range("F11:F12").Select ActiveCell.FormulaR1C1 = "=R[11]C[-4]" Range("H11:I12").Select ActiveCell.FormulaR1C1 = "=R[12]C[-6]" Range("T11:U12").Select ActiveCell.FormulaR1C1 = "=R[13]C[-18]" Range("X11:Y12").Select ActiveCell.FormulaR1C1 = "=R[14]C[-22]" Range("AD11:AE12").Select ActiveCell.FormulaR1C1 = "=R[15]C[-28]" Range("AN11:AO12").Select ActiveCell.FormulaR1C1 = "=R[16]C[-38]" Range("AW11").Select ActiveCell.FormulaR1C1 = "=R[17]C[-47]" Range("B23").Select End Sub これに下記内容を追加したいのですが教えて下さい。 ・B19からB28のデータは入力後消す。 ・貼り付けたら次に入力する時は下の行(A13:14)に貼り付ける。 ・同様にデータを消してA15:16に貼り付ける。以下、下の行に貼り付けていくようにする。 ・貼り付けたらカーソルはB19を選択した状態にする。 言葉足らずでしたら補足します。 何卒宜しくお願い致します。

  • Excel 2007 マクロ 表の集計

    Excel 2007 マクロ 表の集計 「Sheet1」に2つの表があります。 <元データ>の項目ごとに<集計結果>の 計の列に数字が反映されるようにしたいと考えています。 表の画像を添付します。 <元データ>の項目のアルファベットごとに<集計結果>の 項目に分かれます。 マクロの記録では下記にようになりました。 Sub Macro1() ' ' Macro1 Macro ' ' Range("B15").Select ActiveCell.FormulaR1C1 = "=R[-12]C+R[-11]C+R[-10]C" Range("B16").Select ActiveCell.FormulaR1C1 = "=R[-10]C+R[-9]C" Range("B17").Select ActiveCell.FormulaR1C1 = "=R[-9]C+R[-8]C+R[-7]C" Range("B18").Select End Sub どのようにすれば、マクロでアルファベットごとに集計できるのでしょうか。 よろしくお願いいたします。

  • EXCELマクロで左列に値のある行まで選択

    EXCELのマクロの記録を利用して簡単なマクロを作りたいのですが、 やりたいことは、表の最上部のセルにVLOOKUP関数を設定し、 フィルハンドルでWクリックするように表の最下部までコピーしたいのですが、 マクロの記録では、貼り付けする先のセルが固定されてしまい、 表の行数が変動する場合はそのまま使えません。 左列に値のあるセルを判断してその行番号までを選択できれば解決するのですが、 お詳しいかたお教えください。 ちなみにマクロの記録の構文では <フィルハンドルでクリックする場合> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'10FY'!R2C1:R1321C2,2,0)" Selection.AutoFill Destination:=Range("H3:H27") Range("H3:H27").Select End Sub <範囲選択しコピー貼り付けする場合> ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'10FY'!R2C1:R1321C2,2,0)" Selection.Copy Range("H4:H27").Select ActiveSheet.Paste End Sub

  • EXCELのマクロについて

    お世話になっております。 以下のマクロを1万行分繰り返したいのですが、回数を1万回と指定する構文を 教えてください。よろしくお願いします。 Sub Macro16() ' ' Macro16 Macro ' ' Keyboard Shortcut: Ctrl+Shift+Z ' ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Offset(-1, 0).Range("A1:M1").Select Selection.Copy ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "7/5/1905" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "7/6/1905" ActiveCell.Offset(1, -2).Range("A1").Select End Sub

  • PCのマクロについて

    Sub Macro1() ' ' Macro1 Macro ' ' ActiveCell.FormulaR1C1 = "○" Range("F5").Select End Sub Sub Macro2() ' ' Macro2 Macro ' ' ActiveCell.FormulaR1C1 = "●" Range("F5").Select End Sub こんな感じでマクロ入れたんですが図でわかると思うのですが4段目で確認未のボタンを押すと1段目のセルに選択が移動してしまいます。ボタンを押した際に最初に選択したセルから移動しないようにするにはどうすればよいですか?

  • ユーザーフォームのコンボボックスの使い方

    Sub Macro1() Range("A1").Select ActiveCell.FormulaR1C1 = "あ" End Sub と言うマクロがあり、 UserForm1にComboBox1を作りました。 このComboBox1の右矢印をクリックしMacro1を呼び出し選んで実行させたいです。 どうすればいいのでしょうか? よろしくお願いします。

専門家に質問してみよう