- ベストアンサー
ユーザーフォームのデータ
ユーザーファームを2つ作成しました。 そのユーザーフォームのデータを表の最終行に追加をしたいのです。 Range("A65536").End(xlUp).Offset(1,0).select を使おうと思っていますが、うまくいきません。 どなたか教えてください。 <ユーザーフォーム1> Private Sub CommandButton1_Click() Sheet2.Range("H7") = TextBox1 Sheet2.Range("I7") = TextBox2 Sheet2.Range("J7") = TextBox3 Sheet2.Range("K7") = TextBox4 Sheet2.Range("L7") = TextBox5 Sheet2.Range("P7") = TextBox6 If CheckBox1.Value = True Then Worksheets(2).Range("M7") = "0:30" Else Worksheets(2).Range("M7") = "0:00" End If If CheckBox2.Value = True Then Worksheets(2).Range("R7") = "1000" Else Worksheets(2).Range("R7") = "0" End If If CheckBox3.Value = True Then Worksheets(2).Range("S7") = "3000" Else Worksheets(2).Range("S7") = "0" End If If CheckBox4.Value = True Then Worksheets(2).Range("T7") = "1500" Else Worksheets(2).Range("T7") = "0" End If Unload Me End Sub <ユーザーフォーム2> Private Sub CommandButton1_Click() Sheet2.Range("V7") = TextBox1 Sheet2.Range("W7") = TextBox2 Sheet2.Range("X7") = TextBox3 Unload Me End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
多少コードに手を加えています。 Private Sub CommandButton1_Click() Dim lRow As Long With Sheets("Sheet1") '最終行から転記先となる行番号を取得 lRow = .Cells(65536, "A").End(xlUp).Row + 1 'データ転記 .Cells(lRow, "H").Value = TextBox1.Text .Cells(lRow, "I").Value = TextBox2.Text .Cells(lRow, "J").Value = TextBox3.Text .Cells(lRow, "K").Value = TextBox4.Text .Cells(lRow, "L").Value = TextBox5.Text .Cells(lRow, "P").Value = TextBox6.Text If CheckBox1.Value Then .Cells(lRow, "M").Value = "0:30" Else .Cells(lRow, "M").Value = "0:00" End If If CheckBox2.Value Then .Cells(lRow, "R").Value = 1000 Else .Cells(lRow, "R").Value = 0 End If If CheckBox3.Value Then .Cells(lRow, "S").Value = 3000 Else .Cells(lRow, "S").Value = 0 End If If CheckBox4.Value Then .Cells(lRow, "T").Value = 1500 Else .Cells(lRow, "T").Value = 0 End If End With Unload Me End Sub
その他の回答 (1)
- takibo
- ベストアンサー率57% (116/200)
もともとのコードをあまりいじらないように修正してみました。 最終行を select するのではなく、行(Row)を取得しています。 Private Sub CommandButton1_Click() 行 = Sheet2.Range("A65536").End(xlUp).Offset(1).Row Sheet2.Range("H" & 行) = TextBox1 Sheet2.Range("I" & 行) = TextBox2 Sheet2.Range("J" & 行) = TextBox3 Sheet2.Range("K" & 行) = TextBox4 Sheet2.Range("L" & 行) = TextBox5 Sheet2.Range("P" & 行) = TextBox6 If CheckBox1.Value = True Then Worksheets(2).Range("M" & 行) = "0:30" Else Worksheets(2).Range("M" & 行) = "0:00" End If If CheckBox2.Value = True Then Worksheets(2).Range("R" & 行) = "1000" Else Worksheets(2).Range("R" & 行) = "0" End If If CheckBox3.Value = True Then Worksheets(2).Range("S" & 行) = "3000" Else Worksheets(2).Range("S" & 行) = "0" End If If CheckBox4.Value = True Then Worksheets(2).Range("T" & 行) = "1500" Else Worksheets(2).Range("T" & 行) = "0" End If Unload Me End Sub
補足
お答えありがとうございます。 初心者なので、もう少し教えていただければ幸いです。 行 = Sheet2.Range("A65536").End(xlUp).Offset(1).Row の「行」というところには、どういったものを入れればいいか教えていただいてもいいでしょうか。 データの1行目は、H~Tまでの6行目です。 次のデータを入れたい行はH~Tまでの7行目以降となります。 また、各テキストボックス・チェックボックスの「行」というところは、「7」といれればいいんでしょうか?
お礼
ありがとうございました。 また、よろしくお願いします