現在会社のシステムで日報を入力させるユーザーフォームを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)
-
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
-
4
抽出したデータを修正して元のセルに上書きしたい
Access(アクセス)
-
5
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
6
エクセルでフォーム中のテキスト値の保存方法
Excel(エクセル)
-
7
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
8
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
-
9
UserForm1.Showでエラーになります。
工学
-
10
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
11
テキストボックス入力データの保持について
Visual Basic(VBA)
-
12
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
13
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
14
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
15
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
16
ユーザーフォーム内のテキストボックス内の書式設定
Excel(エクセル)
-
17
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
18
Excel VBAのユーザーフォームでVLOOKUP
Visual Basic(VBA)
-
19
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
20
Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
TextBoxから数字が文字...
-
ExcelVBAのユーザーフォームで...
-
X(元Twitter)で問題があり、お...
-
なんで
-
複数行の入力を受け取る方法
-
フォームで半角英数(または直接...
-
何丁目か選べる住所入力補助Aja...
-
インスタのRSSを生成
-
キーボードでのタグ打ちについて
-
delphiでの文字表示書式
-
メールフォームの文字が消える?
-
Flashテキスト入力
-
VB 2005 Textbox にテンキーか...
-
Excel-VBAでInputBox+Pulldown...
-
入力フォームに入力した情報を...
-
ブラウザのアクティブウインド...
-
タイマーで、任意の時間に自動...
-
【VBA】入力フォームを使った、...
-
フォームに書く文字を自動的に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
数字以外の入力をエラーにする...
-
初歩的な事だと思います。 Sub...
-
EXCEL VBA で指定した範囲に入...
-
Windowsのアプリ開発ってなんの...
-
入力フォームの値をQRコードで...
-
教えて!全角文字「μ」の半角
-
Excel-VBAでInputBox+Pulldown...
-
VBAでInputBoxの再入力をさせる...
-
エディットボックスの入力制限...
-
TextBoxから数字が文字...
-
VBAの質問になります メッセー...
-
指定した演算を実施の結果を表...
-
excel vba でユーザーフォーム...
-
アルファベットGの小文字の入力
-
DataGridView 列ごとの入力制限
-
accessで該当するレコードがな...
-
c#でTextBoxの入力制限
-
VBA R1C1形式で変数の入力について
おすすめ情報
【追記】わかりにくくてすみません…
シートの構成は、
・「登録」(フォームボタンのシート)
・「閲覧フォーマット」(データを日ごとに見るためのシート)
・「入力」(フォームで登録したデータを蓄積していくシート)
の3つです。