Excel VBAに関する質問です。内容はユーザーフォームのテキストボックスに入力した内容をワークシート”Sheet1”に列方向にデータ移行したいのですが、もうわからなくなりました。下記に入力したコードを書いています。正直にいうと根本的に間違っています。わかる方お願いします。起こっている現象①最終列の取得にも失敗しています。成功していたら登録№が3になります。②tx2から6まで入力してコマンドボタンを押すと、Sheet1の最終列までデータが入ります。下のコードでは標準モジュールを使っていますが、ユーザーフォームのコマンドボタンクリックで対応して頂いても問題ありません。よろしくお願いいたします。ユーザーフォームコードPrivate Sub CommandButton1_Click()test '標準モジュールで対応’End SubPrivate Sub SpinButton1_SpinUp()Dim lastrow As Longlastrow = ThisWorkbook.Worksheets(\u0026quot;Sheet1\u0026quot;).Cells(1, Columns.Count).End(xlToRight).Columntx1.Value = Application.Min(tx1.Value + 1, lastrow - 1)End SubPrivate Sub SpinButton1_SpinDown()tx1.Value = Application.Max(tx1.Value - 1, 1)End SubPrivate Sub UserForm_Initialize()Dim lastcol As IntegerDim i As IntegerDim ws As WorksheetSet ws = ThisWorkbook.Worksheets(\u0026quot;Sheet1\u0026quot;)lastcol = ws.Cells(1, Columns.Count).End(xlToRight).Columntx1 = ws.Cells(1, lastcol) + 1End Sub標準モジュールコードSub test()Dim i As LongDim lastcol As LongDim ws As WorksheetSet ws = ThisWorkbook.Worksheets(\u0026quot;Sheet1\u0026quot;)With wslastcol = ws.Cells(1, Columns.Count).End(xlToRight).Column + 1 For i = 2 To lastcol .Cells(1, i).Value = UserForm1.tx1.Text .Cells(2, i).Value = UserForm1.tx2.Text .Cells(3, i).Value = UserForm1.tx3.Text .Cells(4, i).Value = UserForm1.tx4.Text .Cells(5, i).Value = UserForm1.tx5.Text .Cells(6, i).Value = UserForm1.tx6.Text Next iEnd WithEnd Sub

Excel

1件の回答

回答を書く

1196749

2026-05-02 11:15

+ フォロー

入力処理でデータは追加していくだけ、スピンボタンは不要だと思います。

入力されたデータを見ていきたい処理も付け加えたいなら意味ありますが。

それとも1件登録した後自動でまた次を登録したいのでしょうか。



標準モジュ-ルにする必要はないので、全部ユーザーフォームのコードでいいと思います。

あと最終列取得のコードが違っていました。



Private Sub UserForm_Initialize()

Dim ws As Worksheet

Dim lastcol As Long

Dim i As Long

Set ws = Worksheets(\u0026quot;Sheet1\u0026quot;)

lastcol = ws.Cells(1, Columns.Count).End(xlToLeft).Column

If lastcol = 1 Then

tx1.Value = 1

Else

tx1.Value = ws.Cells(1, lastcol).Value + 1

End If

End Sub



Private Sub CommandButton1_Click()

Dim ws As Worksheet

Dim lastcol As Long

Dim i As Long

Set ws = Worksheets(\u0026quot;Sheet1\u0026quot;)

With ws

lastcol = Cells(1, Columns.Count).End(xlToLeft).Column + 1

For i = 1 To 6

.Cells(i, lastcol).Value = Controls(\u0026quot;tx\u0026quot; \u0026amp; i).Value

Next i

End With

End Sub

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有