- ベストアンサー
エクセル マクロ 行
エクセル マクロについて Sheet1にはボタンがあり そのボタンをクリックすると フォームが表示してそのテキストに記入して、記録ボタンを押すと Sheet1最終行のフォームからシートにコピーするボタン方法は出来るのですが・・それだと最終行が新しい記載になってしまいます。 Range("a65536").End(xlUp).Offset(1).Select Selection = Selection.Row - 1 例えば A1 タイトル A2 小項目 A3 挿入させたい! A列の3行目から挿入して、その後も常にA3から挿入したいです。 新しい記載は常にA3にさせたいのですが、どうすれば良いのでしょうか?記述を教えて下さい。
- みんなの回答 (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 はやりたいことに近くはないでしょうか?
その他の回答 (5)
- hallo-2007
- ベストアンサー率41% (888/2115)
>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行目にテキストが入る ですが。
補足
ありがとうございます。 具体的に記述を教えて下さい。 以下のようにしましたが思うように作動しません。 すいません。何処が悪いか指摘お願いします。 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)
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 と省略できそうです。
補足
ありがとうございます。 ただ、上記の記述でしても A3の挿入は出来ますが、A3セルを下にずらして前のA3に記載されたものが消えてしまいます。 私の記述が悪いのでしょうか? イメージ) A2 日付 記載者 内容 A3 8/3 茶庫 明日にはチェンジ A4 7/2 マリ お茶がないよ ↓フォームにて入力して記録ボタンを押すと A2 日付 記載者 内容 A3 9/2 八子 了解です。 A4 8/3 茶庫 明日にはチェンジ A5 7/2 マリ お茶がないよ という具合にしたいのですが・・・ すいません 教えて下さい。
- himajin555
- ベストアンサー率27% (3/11)
Sub test() Range("A3").Select Selection.Insert Shift:=xlDown End Sub こんな感じ?
補足
早速の回答ありがとうございます。 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)
Range("a3").Insert Range("a3") = TextBox1 と言うことでしょうか。
補足
ありがとうございます。質問が分かりづらかったですね。すいません。 上記の記述だと 前の記載が消えてA3が入替わってしまいます。 古い記載は常にA4・・・などに下がって残されるようにしたいです。 つまり 新しい記載はA3に行が挿入されるような 感じに作りたいです。
- hallo-2007
- ベストアンサー率41% (888/2115)
>A列の3行目から挿入して、その後も常にA3から挿入したいです。 常にA3に挿入したい ということ? Range("A3").Select になりますが?
補足
ありがとうございます。 上記の記述だと 前の記載が消えてA3が入替わってしまいます。 古い記載は常にA4などに下がって残されるようにしたいです。 つまり 新しい記載はA3に行が挿入されるような 感じに作りたいです。
お礼
ありがとうございました。 とても親切に回答してもらって 私のようなものでも理解出来ました。 以下のようにしたら 出来ました。 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 本当に感謝しています。 ありがとうございました。