• ベストアンサー

エクセル マクロ 行

エクセル マクロについて Sheet1にはボタンがあり そのボタンをクリックすると フォームが表示してそのテキストに記入して、記録ボタンを押すと Sheet1最終行のフォームからシートにコピーするボタン方法は出来るのですが・・それだと最終行が新しい記載になってしまいます。 Range("a65536").End(xlUp).Offset(1).Select Selection = Selection.Row - 1 例えば A1 タイトル A2  小項目 A3  挿入させたい! A列の3行目から挿入して、その後も常にA3から挿入したいです。 新しい記載は常にA3にさせたいのですが、どうすれば良いのでしょうか?記述を教えて下さい。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.6

すみません。訂正がありました。 Range("A3").Insert Shift:=xlDown を Range("3:3").Insert Shift:=xlDown に直してみてください。 ずらしたいのはB3、C3、D3でしたね。 ちょっと、MSGBOXが何をしているのかわかりませんが Private Sub CommandButton1_Click() Dim i As Integer i = MsgBox("記録しますか?", vbOKCancel) If i = 1 Then Sheets("内容").Select Range("3:3").Insert Shift:=xlDown Range("B3").Value = Now()'サンプルとして時刻を入れて有ります Range("C3").Value = "TextBox1" Range("D3").Value = "ComboBox1" Unload Me End If End Sub はやりたいことに近くはないでしょうか?

pop2003
質問者

お礼

ありがとうございました。 とても親切に回答してもらって 私のようなものでも理解出来ました。 以下のようにしたら 出来ました。 Dim i As Integer Dim Cnt As Integer i = MsgBox("記録しますか?", vbOKCancel) If i = 1 Then Sheets("内容").Select Range("3:3").Insert Shift:=xlDown Range("B3").Value = テキスト日付 Range("C3").Value = TextBox1 Range("D3").Value = ComboBox1 Unload Me End If End Sub 本当に感謝しています。 ありがとうございました。

その他の回答 (5)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.5

>A3の挿入は出来ますが、A3セルを下にずらして前のA3に記載されたものが消えてしまいます。 う~ん 何故でしょうね? 仮に 以下のVBAを2つ作って交互に動作試してみてください。 Sub test1() Sheets("内容").Select Range("A3").Insert Shift:=xlDown End Sub Sub test2() Sheets("内容").Select Range("B3").Value = "テキスト日付" Range("C3").Value = "TextBox1" Range("D3").Value = "ComboBox1" End Sub test1 で3行目に挿入(3行目が4行目に移動) test2 で3行目にテキストが入る     ですが。

pop2003
質問者

補足

ありがとうございます。 具体的に記述を教えて下さい。 以下のようにしましたが思うように作動しません。 すいません。何処が悪いか指摘お願いします。 Private Sub CommandButton1_Click() Dim i As Integer Dim Cnt As Integer Sheets("内容").Select Range("A3").Insert Shift:=xlDown Sheets("内容").Select Range("B3").Value = "テキスト日付" Range("C3").Value = "TextBox1" Range("D3").Value = "ComboBox1" MsgBox "記録しますか?", vbOKCancel Unload Me End Sub

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

No3の方のVBAお借りします。 Sheets("内容").Select Range("A3").Select Selection.Insert Shift:=xlDown Range("A3").Select Selection.Offset(, 1) = テキスト日付 で、A3セルを下にずらして、A3に値を入れる になると思います。 Sheets("内容").Select Range("A3").Insert Shift:=xlDown Range("B3").Value = テキスト日付.Value Range("C3").Value = TextBox1.Value Range("D3").Value = ComboBox1.Value と省略できそうです。

pop2003
質問者

補足

ありがとうございます。 ただ、上記の記述でしても A3の挿入は出来ますが、A3セルを下にずらして前のA3に記載されたものが消えてしまいます。 私の記述が悪いのでしょうか? イメージ) A2 日付 記載者 内容 A3 8/3  茶庫  明日にはチェンジ A4 7/2 マリ  お茶がないよ ↓フォームにて入力して記録ボタンを押すと A2 日付 記載者 内容 A3 9/2 八子  了解です。 A4 8/3  茶庫  明日にはチェンジ A5 7/2 マリ  お茶がないよ という具合にしたいのですが・・・ すいません 教えて下さい。

回答No.3

Sub test() Range("A3").Select Selection.Insert Shift:=xlDown End Sub こんな感じ?

pop2003
質問者

補足

早速の回答ありがとうございます。 A3には挿入できますが 前の記載が消えてしまいます。 前の記載をA4に下げていく マクロの記述はないのでしょうか? ちなみにこれが今の記述です。 Private Sub CommandButton1_Click() Dim i As Integer Dim Cnt As Integer Sheets("内容").Select Range("a65536").End(xlUp).Offset(1).Select Selection = Selection.Row - 1 Selection.Offset(, 1) = テキスト日付 Selection.Offset(, 2) = TextBox1 Selection.Offset(, 3) = ComboBox1 MsgBox "記録しますか?", vbOKCancel Unload Me End Sub

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

Range("a3").Insert Range("a3") = TextBox1 と言うことでしょうか。

pop2003
質問者

補足

ありがとうございます。質問が分かりづらかったですね。すいません。 上記の記述だと 前の記載が消えてA3が入替わってしまいます。 古い記載は常にA4・・・などに下がって残されるようにしたいです。 つまり 新しい記載はA3に行が挿入されるような 感じに作りたいです。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

>A列の3行目から挿入して、その後も常にA3から挿入したいです。 常にA3に挿入したい ということ? Range("A3").Select になりますが?

pop2003
質問者

補足

ありがとうございます。 上記の記述だと 前の記載が消えてA3が入替わってしまいます。 古い記載は常にA4などに下がって残されるようにしたいです。 つまり 新しい記載はA3に行が挿入されるような 感じに作りたいです。