• 締切済み

VBAについて

現在マクロ勉強中です。 教えて頂きたいのは、登録ボタンで指定セルの台帳への転記する方法です。 Private Sub cmdToroku_Click() Dim myrow As Integer Option Explicit With ActiveSheet If .Range("A4").Value = "" Then myrow = 1 Else myrow = .Range(Cells(.Rows.Count, 1).End(xlUp).Address).Row + 1 End If .Cells(myrow, 1).Value = TextBox1.Value End With End Sub 上記ですと、開いているシートのA1に入力されてしまいます。 別シートへ転記したい場合どのあたりを修正すればよいのでしょうか? お力お借りできれば幸いです。

みんなの回答

  • kybo
  • ベストアンサー率53% (349/647)
回答No.3

以下の様に★部分を訂正してみてください。 Private Sub cmdToroku_Click() Dim myrow As Integer With Worksheets("台帳") If .Range("A4").Value = "" Then ’★台帳シートのA4で判断する myrow = 4 ’★1を4に変更(A4にしたいのなら) Else myrow = .Range(Cells(.Rows.Count, 1).End(xlUp).Address).Row + 1 End If .Cells(myrow, 1).Value = TextBox1.Value End With End Sub

  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

「台帳」という名前のシートが既に同じブック内にある場合で、アクティブシートのA4の値で判断する場合。 Private Sub cmdToroku_Click() Dim myrow As Integer With Worksheets("台帳") If ActiveSheet.Range("A4").Value = "" Then myrow = 1 Else myrow = .Range(Cells(.Rows.Count, 1).End(xlUp).Address).Row + 1 End If .Cells(myrow, 1).Value = TextBox1.Value End With End Sub

mint-choco
質問者

補足

ご回答ありがとうございます。 続けて質問させて下さい。 台帳と書かれたシートには転記されたのですが、値がA4に入ってくれませんでした。 A1に入ってしまいます。これはまだ異なるところがあるのでしょうか? ユーザーフォーム起動→そこに入力した値が台帳というシートのA4セルに転記をさせたいのが 今回のやりたいことなのですが、ユーザーフォームのテキストボックスの転記先が違う等でしょうか?

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

「'★」を最後につけている箇所になります。 「シート名」に実際のシート名を入力してください。 With ○○ ~ End Withブロックはこの間に記述された構文において 「.Range("A1")」のように先頭にピリオド「.」を記述することで ○○より手前のオブジェクトを省略して記述することが出来ます。 ここで「Activesheet(現在アクティブなシート)」が省略されていますので「.Range」や「.Cells」は 「Activesheet.Range」や「Activesheet.Cells」と記述するのと同意になります。 Private Sub cmdToroku_Click() Dim myrow As Integer Option Explicit With Sheets("シート名") '★   If .Range("A4").Value = "" Then     myrow = 1   Else     myrow = .Range(Cells(.Rows.Count, 1).End(xlUp).Address).Row + 1   End If   Cells(myrow, 1).Value = TextBox1.Value End With End Sub

関連するQ&A