
いつもお世話になります。
Windows7 excell2010 です。
いろんなものに勉強してここまでに作成したユーザーフォームですが、データーは入力できるのですがコマンドボタンをクリックしても各セルに反映されません。
色々と試行錯誤していますがうまくゆきません。
どこに不具合があるかわからず恐れ入りますがどなたかご指導いただけませんか。
参考にコードは参考に下記にします。
ユーザフォームのVBAは下記です
コード
※Module1
Sub 売上()
Do
UserForm1.Show
Loop
End Sub
Sub 入金()
Do
UserForm2.Show
Loop
End Sub
※UserForm1
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "1"
.AddItem "2"
.AddItem "3"
End With
End Sub
Private Sub CommandButton1_Click()
n = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(n, 2) = UserForm1.TextBox1.Text
Cells(n, 3) = UserForm1.TextBox2.Text
Cells(n, 4) = UserForm1.TextBox3.Text
Cells(n, 11) = UserForm1.ComboBox1.Text
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End
End Sub
※UserForm2
Private Sub CommandButton1_Click()
n = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(n, 2) = UserForm2.TextBox1.Text
Cells(n, 3) = UserForm2.TextBox2.Text
Cells(n, 4) = UserForm2.TextBox3.Text
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End
End Sub

A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
他人さまへの「補足」に関する回答で恐縮ですが。
「With」の使い方について調べましょう。
全角で書くと
With Worksheets("売上記入")
n = .Cells(Rows.Count, 1).End(Xlup).Row + 1
.Cells(n, 2) = Me.TextBox1.Text
(略)
End With
と言う感じで、Withで省略したところには「.(ピリオド)」が必要です。
詳細はお調べください。
みなさんのアドバイスをいただきながら再度原点に返り調べなおしたりしてやっと今になって解決しました。
有難うございました。
少しずつですが上に向かっていますがまたまだです。
今後とも皆さんにはお世話になりますがよろしくお願いします。
No.3
- 回答日時:
前お二人からのご指摘通り、
「どのシートの」該当セルに書いてやるか指定しておかないと、
フォームを走らせたときのアクティブシートに書きに行ってしまいます。
なので例えばユーザーフォーム1から「売上記入」シートに書きに行くなら
Private Sub CommandButton1_Click()
With Worksheets("売上記入")
n = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(n, 2) = Me.TextBox1.Text
.Cells(n, 3) = Me.TextBox2.Text
.Cells(n, 4) = Me.TextBox3.Text
.Cells(n, 11) = Me.ComboBox1.Text
End With
Unload Me
End Sub
こんな感じ。
ただし、売上記入シートのA列には式が入っているのでしょうか?
もともと入っているなら特に問題はありませんが、
これが入っていないのであれば
n = Cells(Rows.Count, 1).End(xlUp).Row + 1
これはちょっと問題があります。
この式だと「1列目(A列)についての最終行を見に行きますから、
いつまで経っても新規行に行けません。
なので、B列=2行目で最終行を判断するように
n = Cells(Rows.Count, 2).End(xlUp).Row + 1
としてやる方が無難です。
あるいは、書き込みに行くコードの中に
.Cells(n, 1) = Month(Me.TextBox1.Text)
とでも追加してA列にも値を書きに行くか、どちらかですね。
みなさんのアドバイスをいただきながら再度原点に返り調べなおしたりしてやっと今になって解決しました。
有難うございました。
少しずつですが上に向かっていますがまたまだです。
今後とも皆さんにはお世話になりますがよろしくお願いします。
No.2
- 回答日時:
次のようにするのがよいでしょう。
売上記入シート上に「開発」タブの「挿入」からActiveXコントロールからコマンドボタンをクリックしてシート上にコマンドボタンを配置します。そのコマンドボタンを右クリックして「コードの表示」から次のコードを入力しkます。
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
その画面で「挿入」から「ユーザーフォーム」を選択します。
最初のケースではUserform1の画面が表示されますのでそこにCombox1を描き、また、テストボックス1,2,3を配置します。
またCommandButtonを配置します。
ユーザーフォーム上で右クリックして「コードの表示」を選んでから、その画面には次のコードを入力します。
Private Sub UserForm_Initialize()
With UserForm1.ComboBox1
.AddItem "1"
.AddItem "2"
.AddItem "3"
End With
End Sub
Private Sub CommandButton1_Click()
With Worksheets("Sheet1")
n = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(n, 2) = UserForm1.TextBox1.Text
.Cells(n, 3) = UserForm1.TextBox2.Text
.Cells(n, 4) = UserForm1.TextBox3.Text
.Cells(n, 11) = UserForm1.ComboBox1.Text
End With
Unload Me
End Sub
同様に入金記入シート上でも同じ操作を行ってシート上にコマンドボタン、ユーザーフォーム2を作成します。
ユーザーフォーム2ではコンポボックスを配置する必要はないので次のようなコードになりますね。
Private Sub CommandButton1_Click()
With Worksheets("Sheet2")
n = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(n, 2) = UserForm1.TextBox1.Text
.Cells(n, 3) = UserForm1.TextBox2.Text
.Cells(n, 4) = UserForm1.TextBox3.Text
End With
Unload Me
End Sub
この回答への補足
UserForm1 / 2 をご指導いただき下記のように修正してテストしましたところ、
「実行時エラー’9’
インデックスが有効範囲にありません」の表示が出ました。
少し調べましたがよくわかりませんでした。
誠に申し訳ありませんが再度ご指導願えないでしょうか。
よろしくお願いします。
修正後のマクロで下記にします。
※Mojule1
Sub 売上記入()
Do
UserForm1.Show
Loop
End Sub
Sub 入金記入()
Do
UserForm2.Show
Loop
End Sub
※UserForm1
Private Sub UserForm_Initialize()
With UserForm1.ComboBox1
.AddItem "1"
.AddItem "2"
.AddItem "3"
End With
End Sub
Private Sub CommandButton1_Click()
With Worksheets("売上記入")
n = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(n, 2) = UserForm1.TextBox1.Text
Cells(n, 3) = UserForm1.TextBox2.Text
Cells(n, 4) = UserForm1.TextBox3.Text
Cells(n, 11) = UserForm1.ComboBox1.Text
End With
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End
End Sub
※UserForm2
Private Sub CommandButton1_Click()
With Worksheets("入金記入")
n = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(n, 2) = UserForm2.TextBox1.Text
Cells(n, 3) = UserForm2.TextBox2.Text
Cells(n, 4) = UserForm2.TextBox3.Text
End With
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End
End Sub
みなさんのアドバイスをいただきながら再度原点に返り調べなおしたりしてやっと今になって解決しました。
有難うございました。
少しずつですが上に向かっていますがまたまだです。
今後とも皆さんにはお世話になりますがよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS フォームでの、データ...
-
EXCEL VBAのユーザーフォームに...
-
Accessでaccdeへ変換で機能しない
-
【EXCEL】UserFormで入力して ...
-
アクセスで「モジュールがあり...
-
ACCESS フォームで、ボタンの...
-
ExcelVBAでセルをクリックして...
-
ExcelVBAで指定外のUserFormを...
-
ユーザーフォームに入力したデ...
-
Access レポート印刷するときに...
-
レコードを保存するコード ア...
-
データベースのINT型項目にNULL...
-
エクセルをACCESSのレポ...
-
「フォームを作成できませんで...
-
YahooのIDがロックされてしまい...
-
クエリで出来た表にチェックボ...
-
Excelで入力したデータを自動的...
-
ACCESSでコントロールソースの変更
-
新規レコード行を非表示にしたい
-
アクセスでフォームビューがみ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBAのユーザーフォームに...
-
ExcelVBAでセルをクリックして...
-
エクセルVBA オプションボタ...
-
エクセルVBAからアクセスフ...
-
アクセスで「モジュールがあり...
-
ACCESS フォームでの、データ...
-
JW-CADのAutoモードの解除はで...
-
コマンドプロンプト使用時に「'...
-
Accessでaccdeへ変換で機能しない
-
Accessでエラーメッセージの表...
-
ユーザーフォームのスクロール...
-
標準モジュールだとエラーにな...
-
ACCESS カンマをスペースに置...
-
ACCESS フォームで、ボタンの...
-
Notesでアンケートをとりたい
-
アクセスで検索ボタンを作りた...
-
jw-win CAD のコマンドの操...
-
アクセスでテキストボックスに...
-
Access VBAによるフォームの色...
-
access の 閉じるボタンを無効...
おすすめ情報