現在会社のシステムで日報を入力させるユーザーフォームをExcel VBAで作成しています。
ユーザーフォームから登録ボタンを押して、
一覧のシートに転記するところまでは出来たのですが
間違えて入力したとき(又は一時保存して再度途中から入力したいとき)
再度日付をキーにしてデータを元のユーザーフォームに呼び出し、
上書き保存ができるようにしたいとのことで指示がありました。
現在は下記のような形で日付(+その他必須項目)が入力されていさえすれば
新しいデータは次の行に登録されていくようになっているのですが、
現在はITの会社でもなく私自身ほぼネットの情報から見様見真似でやっているので
どうしたらよいかわからず、手が止まってしまいました。
専門用語もあまりわからないような状態で申し訳ないのですが、
どなたか教えていただけると助かります…宜しくお願いします。
----------------------------------------------------------------------------------------
’登録ボタンを押した時の動作
Private Sub CommandButton1_Click()
’必須項目未入力時のエラーメッセージ
If TextBox295.Value = "" Then
MsgBox "日付を入力してください!", vbOKOnly
TextBox295.SetFocus
Exit Sub
:
:
Else: MsgBox "登録が完了しました。"
End If
’ ””入力””シートに下記のデータを転記する
With Worksheets("入力").Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0) = TextBox295.Value '日付をA列に入れる
.Offset(1, 9) = ComboBox1.Value '天気をJ列に入れる
:
:
End with
End sub
----------------------------------------------------------------------------------------
No.3ベストアンサー
- 回答日時:
見様見真似とはいえ、
・「登録」(フォームボタンのシート)
・「閲覧フォーマット」(データを日ごとに見るためのシート)
・「入力」(フォームで登録したデータを蓄積していくシート)
はご自分で作成されたのであれば、アドバイス程度を・・・
「ユーザーフォーム」に「読込(等、表示内容はご自由に!)」のCommandButtonを追加し、以下の操作を加えればよい。
1.日付(TextBox295に入力済)をキーに「入力」シートに記載されている行を検索・特定する。
※「データ既存行」としておきます。No2さんも回答していますが、「Find」が一般的。
しかし、「閲覧フォーマット」(データを日ごとに見るためのシート)がある以上、そのアルゴリズムはほとんどできているはずです。
2.その行の情報を「ユーザーフォーム」に表示する。
※そのセルをもとに各コントロールに内容を入力する。
例
TextBox295.Value =.Offset(1, 0) 'A列の値を日付表示用に入れる
ComboBox1.Value=.Offset(1, 9) 'J列の値を天気表示用に入れる
:
:
--------------「ユーザーフォーム」に表示するための変更はここまでーーーーーーーーー
次に「登録操作の変更点」
・登録ボタンで、入力されてた内容をその行に書き込む
ほとんど既存の「登録ボタン」と同じ内容ですが、
「新規の登録」なのか「既存データの変更・追加」なのかによって
「With Worksheets("入力").Cells(Rows.Count, 1).End(xlUp)」
と
「With Worksheets("入力").Cells(データ既存行, 1).End(xlUp)」
を使い分ける必要が出てきます。
以上、参考にして下さい。
ご丁寧にありがとうございます。転記の方法については、
単純に転記元と転記先を入れ替えればよかったんですね!
そのあたりは簡単にできそうですが、Findを使う方法については
まだ少しよくわかっていない部分がありますので、書き方を他でも探してみます。
※閲覧フォーマットへの転記については、データを蓄積していく「入力」のシートから
単純にVLOOKUPでこちらも日付をキーにして入力させるようにしてしまいましたので
考え方は同じだと思うのですが、初めは検索ができない形式でも問題ないとの指示だったため、
閲覧用の方は、VLOOKであれば…と思い先に作成してしまったのですが、結果
フォームにも該当するデータを転記せざるを得なくなり、今VBAでやっています。
No.2
- 回答日時:
No.1です。
>・「閲覧フォーマット」(データを日ごとに見るためのシート)
>・「入力」(フォームで登録したデータを蓄積していくシート)
さて問題です。
「入力」シートのある1行のセルには、ユーザーフォームのどのコントロールから登録したのか?をどうやったら回答者はわかるでしょうか?
そもそもユーザーフォームにはどの位のコントロールが使われているのかも不明ですよね。
考え方だけで良ければ日付をFindメソッドで検索し、見つかったらOffsetでそれぞれのコントロールに値を入れていくと言う、
「登録」とは逆の動きをさせるButtonを配置して実行させる感じではないでしょうか?
考え方についてはわかりました!ありがとうございます。
ユーザーフォームには、「登録」というコマンドボタンを作っており、そのボタンに上記の内容とを入力しており、別の「入力」というシートに上から順に情報が追記されているような状態です。
単純な入力のみですので、その他にはユーザーフォームの終了ボタンしか作っておりません。
ただ、入力項目がそれぞれ数字を入力していくものが多く、全部で200項目程度あり、さらに混乱してしまっているような状態です…
No.1
- 回答日時:
登録ボタンの動作コードもですけど、どんなSheet構成になっているかが分からない(列とコントロールとの関係も)状態では、
回答も難しいのではないかと思いますよ。
ズブの素人ですので他の方はわかるのかもですが。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
抽出したデータを修正して元のセルに上書きしたい
Access(アクセス)
-
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
エクセルでフォーム中のテキスト値の保存方法
Excel(エクセル)
-
6
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
7
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
8
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
9
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
10
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
11
テキストボックス入力データの保持について
Visual Basic(VBA)
-
12
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
13
ユーザーフォーム内のテキストボックス内の書式設定
Excel(エクセル)
-
14
Excel VBAのユーザーフォームでVLOOKUP
Visual Basic(VBA)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
VBA リストボックスをダブルクリックしデータを修正したいのですが…。
Visual Basic(VBA)
-
17
EXCEL・VBAフォームの日付(表示形式を変更したい)
Excel(エクセル)
-
18
検索して修正したデータの上書転記
Visual Basic(VBA)
-
19
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
20
EXCEL VBAのコンボボックスに取り込むリストについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
Excel-VBAでInputBox+Pulldown...
-
EXCEL VBA で指定した範囲に入...
-
初歩的な事だと思います。 Sub...
-
教えて!全角文字「μ」の半角
-
テキストボックスの番号を使っ...
-
入力フォームへ、データを自動...
-
VBAでInputBoxの再入力をさせる...
-
数字以外の入力をエラーにする...
-
excel vba でユーザーフォーム...
-
TextBoxから数字が文字...
-
複数行の入力を受け取る方法
-
DataGridViewの桁数制限に関して
-
マクロで設定時刻の入力がわか...
-
TEXTAREA に入力時の位置
-
accessで該当するレコードがな...
-
SQL で数値フィールドにDBNULL...
-
VBA R1C1形式で変数の入力について
-
HTMLで入力値を半角大文字に制御
-
入力フォームの値をQRコードで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
VBAで質問があります
-
Windowsのアプリ開発ってなんの...
-
Excel-VBAでInputBox+Pulldown...
-
EXCEL VBA で指定した範囲に入...
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
入力フォームの値をQRコードで...
-
excel vba でユーザーフォーム...
-
TextBoxから数字が文字...
-
VBAの質問になります メッセー...
-
DataGridViewの桁数制限に関して
-
accessで該当するレコードがな...
-
c#でTextBoxの入力制限
-
VBA R1C1形式で変数の入力について
-
エディットボックスの入力制限...
-
「イ分」・・・フンという文字...
-
アルファベットGの小文字の入力
おすすめ情報
【追記】わかりにくくてすみません…
シートの構成は、
・「登録」(フォームボタンのシート)
・「閲覧フォーマット」(データを日ごとに見るためのシート)
・「入力」(フォームで登録したデータを蓄積していくシート)
の3つです。