ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:データの最後尾より連続入力するマクロについて) VBA初心者のためのデータ連続入力マクロの記述方法 2011/06/27 23:46 このQ&Aのポイント VBA初心者のためにデータ連続入力マクロの記述方法を解説します。データ最後尾に連続データを順に入力する方法を説明します。A5:F5のデータをA6:F6にオートフィルで入力するマクロの記述例を紹介します。 データの最後尾より連続入力するマクロについて VBA初心者です。宜しくお願いします。 やりたい処理は、データ最後尾に連続データを順に入力していく作業です。 下記ですとA5:F5のデータをA6:F6にオートフィルで入力し、 A6= 6 B6= 空白 C6= 空白 D6= 空白 E6= を F6= ん という計算結果にしたいのです。 ___|A__B__C__D__E__F 1 | 1 あ い う え お 2 | 2 か き く け こ 3 | 3 さ し す せ そ 4 | 4 た ち つ て と 5 | 5 を ん 6 | Range("A1").End(xlDown).Select Range(ActiveCell, ActiveCell.Offset(0, 5)).Select A5:F5を選択した後のオートフィルのマクロはどう記述すればよいでしょうか? 宜しくお願いいたします。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー merlionXX ベストアンサー率48% (1930/4007) 2011/06/28 10:24 回答No.1 Sub test() Dim Rng(1) As Range Set Rng(0) = Range(Range("A1").End(xlDown), Range("A1").End(xlDown).Offset(0, 5)) Set Rng(1) = Rng(0).Resize(2, 6) Rng(0).AutoFill Destination:=Rng(1), Type:=xlFillDefault End Sub では? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ パソコン・スマートフォンソフトウェアオフィス系ソフト 関連するQ&A データの入っている行だけを繰り返し処理マクロについて データの入っている行だけを繰り返し処理したく以下マクロ記述しましたが上手くいきません。宜しく御願いします。 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 増減するデータの集計について Excel2013使用です。 「受注書」というシートのデータを集計し、「集計表」というシートに 書き出したいです。 【シート「受注書」】 C D E F G 1 商品名 色 数量 単価 備考 2 データ・・・・・・・・・・・・・・・ 【シート「集計表」】 A B C D E 6 商品名 色 数量 単価 備考 7 シート「受注書」のC~Fのデータをコピーし、 シート「集計表」のA~Dに貼り付け後、商品名を基準に重複を削除し、 各商品の合計数量をSUMIF関数で集計するようにしました。 テストデータでは上手く行ったのですが、「受注書」のデータは都度 増減があるため、データを増やして再度テストしたところ、増やした分の データが「集計表」の下部に残ってしまいます。 こんな感じ↓ 【シート「集計表」】 A B C D E 6 商品名 色 数量 単価 備考 7 ***** ** *** *** ** 8 **** ** *** *** ** 12**** ** *** *** ** ←増やしたデータ コードは以下の通りです Sheets("受注書").Select Range("C2:G2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("集計表").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes Range("C7").Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("C7").Select ActiveCell.FormulaR1C1 = "=SUMIF(受注書!C3:C5,集計表!RC1,受注書!C5)" Range("C7").Select Selection.AutoFill Destination:=Range("C7:C9"), Type:=xlFillValues Range("C7:C9").Select Range("A2").Select End Sub 試しに ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes の部分を ActiveSheet.Range("$A:$E").RemoveDuplicates Columns:=1, Header:=xlYes に変えてみたところ、下部の重複データは消えたのですが、集計結果が何故か A7以降にではなくA4以降に表示されてしまい、罫線も消えてしまいました。 更に、C列の数量に不要な0が表示されてしまいます。 こんな感じ↓ A B C D E 4 商品名 色 数量 単価 備考 5 ***** ** *** *** ** 6 **** ** *** *** ** 7 0 8 0 どこを直したら良いでしょうか? 2次方程式を解くマクロを作成したのですが解けません。 2次方程式を解くマクロを作成したのですが解けません。 マクロの授業で2次方程式を解くマクロを作成したのですが途中で何がなんだかわかんなくなってしまいました。 どこがどう間違っているのかわからない初心者なのでわかりやすい解説よろしくお願いします。 ■二次方程式の解を求めるマクロ マクロ名 niji 条件 課題のファイルのsheet1を開き、 A1にxの二乗の係数 C3にxの係数 E3に定数項 を入力した場合 判別式の結果より、I3に解の状態を表示させる 表示は 2つの異なる実根 重根 複素数根 のいずれかとする。 そして、J3、K3に二次方程式の解を表示させる。解は二次方程式の解の公式 より求める。 複素数は i としてあらわす。 以下作成したマクロ↓ Sub niji() Range("A3").Select a = ActiveCell.Formula Range("C3").Select b = ActiveCell.Formula b2 = -b / 2 Range("E3").Select c = ActiveCell.Formula d = b * b - 4 * a * c Range("J3,K3").Formula = "" 'ActiveCell.Formula = "" If d > 0 Then x1 = b2 + Sqr(d) / 2 x2 = b2 - Sqr(d) / 2 Range("J2").Select ActiveCell.Formula = "解1" Range("J3").Select ActiveCell.Formula = Str$(x1) Range("K2").Select ActiveCell.Formula = "解2" Range("K3").Select ActiveCell.Formula = Str$(x2) End If If d = 0 Then Range("J2").Select ActiveCell.Formula = "x =" Range("J3").Select ActiveCell.Formula = Str$(b2) End If If d < 0 Then d2 = Sqr(-d) / 2 Range("J2").Select ActiveCell.Formula = "x1 =" Range("J3").Select ActiveCell.Formula = Str$(b2) + " +- i " + Str$(d2) End If If "J3" = "K3" Then Range("I3").Select ActiveCell.Formula = "重解" End If If "J3" > "K3" Then Range("I3").Select ActiveCell.Formula = "2つの異なる実根" End If If "J3" < "K3" Then Range("I3").Select ActiveCell.Formula = "2つの異なる実根" End If Range("b8").Select End Sub マクロ初心者なのでわかりやすい解説お願いします。 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? OKWAVE コラム ExcelVBAでのオートフィルの使い方 Excel2003です。 Bセルに入っている値をHセルまで右方向にオートフィルするマクロを組んでいるのですが、うまく動きません。 Bセルの最終行は変動し、オートフィルはBセルの最終行と最終行の1つ手前の2つ分をオートフィルしたいのです。 Range("B1").End(xlDown).Offset(-1, 0).Select Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault Range("B1").End(xlDown).Offset(0, 0).Select Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault これで、オートフィルしようと思っていたのですが、 Range(ActiveCell, ActiveCell.Offset(0, 7)).AutoFill Type:=xlFillDefault この式の実行で、 実行時エラー'1004' RangeクラスのAutoFillメソッドが失敗しました と、出てしまいます。 Selection.AutoFill Destination:=Range("B23:H23"), Type:=xlFillDefault こういうマクロなら動くので、AutoFillの後に明確な範囲指定をしていないせいなのでしょうか? 最終行が変動してしまう為、このような明確な範囲指定をする事ができません。 いい解決方法はないでしょうか? エクセル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のマクロについて お世話になっております。 以下のマクロを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 エクセル マクロ 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" 文字列+数字+アルファベットの連続データについて 以下のような連続データを簡単にエクセル(2007)で入力したいです。 関数でもVBAでもオートフィルを合わせたものなどでも構いませんので、やり方はあるでしょうか? 内容はダミーが混ざっております。 <TEST-133a> <TEST-133b> <TEST-133c> <TEST-133d> <TEST-133e> <TEST-133f> <TEST-133g> <TEST-134a> <TEST-134b> <TEST-134c> <TEST-134d> <TEST-134e> <TEST-134f> <TEST-134g> <TEST-134h> <TEST-134i> <TEST-134j> 以上、よろしくお願いいたします! Excelの連続データ入力について Excelで連続データを入力したいのですが、連続するデータが複数重なると(かつ連続しない文字も含んでいます)これらのオートフィルは重なったセルも加算され狙ったものとは違う値になってしまいます。 例えば、 =A1 aaa(ただの文字) =B1 これをオートフィルで連続データを作成すると、 =A1 aaa =B1 =A4 aaa =B4 =A7 aaa =B7 こうなります。 本当は、 =A1 aaa =B1 =A2 aaa =B2 =A3 aaa =B3 こうしたいのです。 良い方法はありませんでしょうか? 宜しくお願い致します。 文字列を連続で置き換え・・・・? マクロを記録したんですが手直しして繰り返しと空白のセル内が見つかった場合 繰り返しを終わらせワードパッドにコピーして保存終了させたいんですがわかりません? 誰か教えてください。 ' ' Macro2 Macro ' マクロ記録日 : 2012/4/21 ユーザー名 : cocoro ' ' Range("E:E").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""#"",RC[-4])" Range("F1").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""$"",RC[-4])" Range("G1").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""&"",RC[-4])" Range("E2").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""#"",RC[-4])" Range("F2").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""$"",RC[-4])" Range("G2").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""&"",RC[-4])" Columns("G:G").Select Selection.Copy Columns("H:H").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Columns("H:H").Select ActiveWindow.SmallScroll Down:=-6 Application.CutCopyMode = False Selection.Copy End Sub エクセルの入力データーを別のシートの日付と氏名の交差点に記録していくマクロ 現在別のカテゴリーで教えていただいたマクロなのですが、 Sheet1に入力されたデータをSheet2に転記するマクロに苦しんでおります。週明けには解決したいのでこのカテゴリーにも質問することにしました。 現在の状況は以下の通りです。 Sheet1 A B C D 1 日付 氏名 成績 区分 2 9/23 佐藤 95 優 ここでマクロを実行すると Sheet2 A B C D E F G 1 1組 2組 2 田中 佐藤 小林 近藤 三浦 遠藤 3 9/19 90 4 9/21 80 5 9/21 95 6 9/21 95 7 9/22 95 となって欲しいのですが、同じ日付で続けて入力すると Sheet2 A B C D E F G 1 1組 2組 2 田中 佐藤 小林 近藤 三浦 遠藤 3 9/19 90 4 9/21 95 80 95 5 9/21 6 9/21 7 9/22 95 となってしまいます。 マクロは Sub Macro001() 'まず日付を転記します Range("A2").Select Selection.Copy Sheets("sheet2").Select Range("A65536").Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Application.CutCopyMode = False Range("C3").Select '続いて転記します Dim x As Long Dim y As Integer x = Application.Match(Sheets("sheet1").Range("a2"), Sheets("sheet2").Columns(1), 0) y = Application.Match(Sheets("sheet1").Range("b2"), Sheets("sheet2").Rows(2), 0) Sheets("sheet2").Cells(x, y) = Sheets("sheet1").Range("C2") End Sub です。 どうかよろしくお願いいたします。 エクセル マクロについて Book1で入力データ作成し、保存次第、添付画像の黄色部分に、自動転記する様マクロを組みたいと考えています。 現在、勉強中で、簡単な下記の様なマクロはできました。 これを応用して実践してみたいのですが、何を加えればよいのか、アドバイス頂けたら幸いです。 --------- Sub Macro1() ' ' Macro1 Macro ' ' a = ActiveCell.Value Range("A2").Select ChDir "C:\Users\takana\Desktop" Workbooks.Open Filename:="C:\Users\takana\Desktop\転記.xlsx" Sheets("Sheet2").Select ActiveCell.FormulaR1C1 = "" Range("B2").Select ActiveCell.FormulaR1C1 = a Range("B3").Select End Sub ----------- ヤバいパソコンが壊れたかも!?事前に知っておきたい3つの兆候と対策 OKWAVE コラム マクロの編集方法を教えて下さい。 自分で記録したマクロを親切な方に編集してもらいました。実行スピードが格段に速くなったのですが、さらに処理したい項目が出来たので、別に記録してコピー、適切な箇所に挿入したのですが、実行時エラーが出ます。どう直していいのか分かりません。分かる方教えて下さい。 Sub Incert12() Dim wRow As Long Dim i As Integer Dim tbl(1 To 12, 1 To 1) As Integer wRow = Range("A65536").End(xlUp).Row Rows(CStr(wRow) & ":" & CStr(wRow + 11)).Insert Range(Cells(wRow + 1, "B"), Cells(wRow + 11, "B")).FormulaR1C1 = "=R[-1]C" '↑(1)これの代わりにB列を12行全て結合したい For i = 1 To 12 tbl(i, 1) = i Next i Range(Cells(wRow, "C"), Cells(wRow + 11, "C")).Value = tbl '↑(2)これに加えてA列に以下の処理も加えたい 'ActiveCell.Offset(-2, -8).Range("A1").Select 'ActiveCell.FormulaR1C1 = "=R[-1]C+1" 'ActiveCell.Select 'Selection.AutoFill Destination:=ActiveCell.Range("A1:A12"), Type:= _ ' xlFillDefault 'ActiveCell.Range("A1:A12").Select '↓(3)F列ではなく、FからK列までにしたい。 Cells(wRow + 12, "F").AutoFill Range(Cells(wRow, "F"), Cells(wRow + 12, "F")) 'これが私が作ったマクロ。(2行目に問題ありとの事) 'ActiveCell.Offset(-1, 5).Range("A1:F1").Select 'Selection.AutoFill Destination:=ActiveCell.Range("A1:F13"), Type:= _ ’ xlFillDefault 'ActiveCell.Range("A1:F13").Select Cells(wRow, 1).Select End Sub 以上(1)~(3)を直したいのです。どなたかよろしくお願い致します。 エクセルVBAで教えて下さい。 A1のセルに [ 1- 5] 4.05398e-01 3.63385e-01 -2.22992e-01 9.89158e-03 -6.43695e-02 A2のセルに [ 6-10] -5.12224e-04 4.07480e-04 -2.73746e-04 -1.77853e-02 -2.13805e-03 A3のセルに [11-15] -6.88489e-03 -2.06765e-02 -9.44633e-03 6.97059e-03 -1.28400e-02 と、このような感じでA7セルまで同じ感じでスペースで空いた数値が入力されています。 A8のセルのみ [36-37] -6.39210e-03 -1.55806e-03 と入力されております。 まず行いたいのはスペースが空いてる部分で、それぞれの数値を各セルに分けたいです。 A1のセルに入力されている [ 1- 5] 4.05398e-01 3.63385e-01 -2.22992e-01 9.89158e-03 -6.43695e-02 ならば A1に[1-5] B1セルに4.05398e-01 C1セルに3.63385e-01 のように これをA1からA8のセルで行ったあと指定のセルを30行目に貼り付けます。 E1→A29 C2→B29 D2→C29 E2→D29 E3→E29 F3→F29 B4→G29 D5→H29 E5→I29 F5→J29 貼り付けのデータは増えていきます。つまり、30行目にデータが入ってる場合は そのデータが1行下の行に下がり、新たなデータが30行目に追加されます。 このようにして、データが最大で58行目まで追加される可能性があります。 最小であれば30行目、31行目の2つしかない場合あります。 この時、0の近似値を各列のセルから探し、当てはまるセルを赤く塗り潰すというのが 今回行いたいことです。 A列ならA30~A58までの中で0の近似値を探し、当てはまるセルを赤く塗り潰す。 ただ空白の場合は無視してもらいたいです。0の近似値だと空白が選択されてしまうので。 近似値探しの前までならマクロがありますのでご参照下さい。 Sub Macro4() ' ' Macro4 Macro ' ' Range("A1:A8").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(21, 1), Array(34, 1), Array(47, 1), _ Array(60, 1)), TrailingMinusNumbers:=True Range("A1").Select Range("E1").Select Selection.Copy Range("A29").Select ActiveSheet.Paste Range("C2:E2").Select Application.CutCopyMode = False Selection.Copy Range("B29").Select ActiveSheet.Paste Range("E3:F3").Select Application.CutCopyMode = False Selection.Copy Range("E29").Select ActiveSheet.Paste Range("B4").Select Application.CutCopyMode = False Selection.Copy Range("G29").Select ActiveSheet.Paste Range("D5:F5").Select Application.CutCopyMode = False Selection.Copy Range("H29").Select ActiveSheet.Paste Range("J7").Select Application.CutCopyMode = False Range("A29:K29").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("A29:K29").Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With Range("A29").Select Range("A1:F8").Select Selection.ClearContents Range("A1").Select Range("K29").Select With Selection.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With Selection.NumberFormatLocal = "G/標準" End Sub わかりずらい質問ですみませんが、ご指導の程 お願い致します。 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の内容とならず直接入力となっています。 これをどう変更すればいいでしょうか? エクセルVBAの保存 毎月異なった新しいエクセルファイルに同じような加工を施すため、VBAを書きました。対象はActivesheetとしています。 で、質問は、この新しいエクセルファイルの標準モジュールにいちいちこのVBAをコピーペーストせずに実行する方法です。 きっと何かあるとは思うのですが・・・・。 VBAは次のような簡単なものです。 Sub 加工1() Dim e As Integer, s As String, n As String e = Range("A4").End(xlDown).Row s = Replace(Mid(Range("A2"), 8, 5), "年", "") & "-" n = Replace(Mid(Range("A2"), 19, 5), "年", "") & "-" Range("A1:C2").MergeCells = False Columns("B:B").Select Selection.Insert Shift:=xlToRight Columns("A:A").Select Selection.Insert Shift:=xlToRight Columns("C:C").Select Selection.NumberFormatLocal = "G/標準" Range("B3").Select Selection.AutoFill Destination:=Range("B3:C3"), Type:=xlFillDefault Range("B3").Select ActiveCell.FormulaR1C1 = "商品番号1" Range("C4").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C" & e), Type:=xlFillDefault Range("A3").Select ActiveCell.FormulaR1C1 = "抽出年月日" Range("A4").Select ActiveCell.FormulaR1C1 = s & n & 1 Range("A4").Select Selection.AutoFill Destination:=Range("A4:A" & e), Type:=xlFillDefault Rows("3:3").Select Selection.Insert Shift:=xlDown Range("B1:E1").MergeCells = True Range("B2:E2").MergeCells = True ActiveSheet.Name = "提出用" End Sub 表の行を増やすマクロの疑問 見積書の表があります。 A1は欄外の空白セル、B1は内容欄、C1は数量欄、D1は単価欄、E1は金額欄です。 B2からE2は値を記入する欄としE2には数量*単価の関数を埋め込みます。B3からE3までも形はそれと同じにし、E4が合計の値を記入する欄で関数は=SUM(E2:E3)です。その上で第3行を「表示しない」とします。 必要なだけの行を随時追加してゆく為に、苦労して次のような動作をするマクロ記録を作りました。 A4にフォームのボタンを置き、A4セルをクリックした後にそのボタンをクリックすれば非表示になっている直ぐ上の行を表示させてコピーし、その場に表示行として新規挿入します。 つまりE4は繰り下がりE5になりますが、自動的に関数は=SUM(E2:E4)となります。 そして新しく第4行を非表示としてやります。この繰り返しです。 記録されたマクロを見ると下のようになっています。 Sub 増行() ' ' 増行 Macro ' マクロ記録日 : ユーザー名 : ' ' ActiveCell.Select ActiveCell.Offset(-1, 0).Range("A1:E3").Select Selection.EntireRow.Hidden = False ActiveCell.Offset(0, 0).Range("A1:E1").Select Selection.Copy Selection.Insert Shift:=xlDown ActiveCell.Offset(1, 0).Range("A1:E1").Select Selection.EntireRow.Hidden = True ActiveCell.Offset(1, 0).Range("A1").Select End Sub このマクロはちゃんと機能するのですが、問題はこのシートの値を記入する場所以外を 保護しようとすれば「実行時エラー'1004' RangeクラスのInsertメソッドが失敗しました」 と表示されます。 どうすればこれを避けて保護する事が出来るでしょうか。 よろしくお願いします。 なお私は超初心者なので自分でVBを記述したり意味を読み取る事はほとんど出来ません。 エクセルVBAで範囲の指定をしたいです(初心者) エクセルVBAで範囲の指定をしたいです(初心者) 列AからJがデータが入る範囲です。 列AとBとCには必ず数値等が何かしら入ります。 列Dは常に空白です。 列E以降は何か入ることも入らないこともあります。 7行目までデータがある場合、 A1セルからこの場合はJ7セルまでを範囲指定したいのですが 行数は未定なので、 Range("A1").Select Range(Selection,Selection.End(xlDown)).Select でA列のデータ最終行まで下がり、そこから9つ右の列までを 範囲指定するというのがよくわかりません。 自動記録で絶対参照と相対参照を切り替えてやってみたのですが、 どうしても Range(Selection, Selection.End(xlDown)).Select ActiveCell.Range("A1:J7").Select と常にA1からJ7が指定になってしまいます。 バージョンは2003です。 つたない質問文で申し訳ありませんが、 どなたか宜しくお願いいたします。 エクセルでのデータ入力について 質問は2つあります。 1.セルA1からA5まで,違う文字データが入っている。 全てのデータの頭に同じ文字を「簡単に」入れたい。 置換を使って「*」→「A*」とやろうとしましたが, (全てのデータの頭に「A」を入力したいとする) データそのものが,「A*」に変わってしまいました。 2.セルA1からA4まで順番に "a-1","a-2","b-1","b-2"という4つのデータがはいっている。 これを,ドラッグで(オートフィル?),引っ張ったときに, 自動的に,"c-1","c-2","d-1","d-2",,,,,,, と入力したいんですが,出来ますか? 以上2点,片方だけでもいいので,分かる方がいらっしゃったら, よろしくお願い致します。:) 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にたくさんコメントを入れていただくと助かります。 宜しくお願い致します。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ パソコン・スマートフォン ソフトウェア Excel(エクセル)Word(ワード)PowerPoint(パワーポイント)Access(アクセス)その他MS Office製品オフィス系ソフトPhotoshop(フォトショップ)Illustrator(イラストレーター)その他Adobe製品画像・動画・音楽編集ホームページ作成ソフト筆まめ・はがき作成フリーウェア・フリーソフトその他(ソフトウェア) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など