現在会社のシステムで日報を入力させるユーザーフォームを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も見ています
-


ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-


ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-


入力済み、選択したセルに連動した行のデータをユーザーフォームで呼び出すには
Excel(エクセル)
-
-
4

エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5

抽出したデータを修正して元のセルに上書きしたい
Access(アクセス)
-
6

VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
-
7

ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
8

エクセルのマクロで検索・抽出したデータを修正及び更新して元データに反映
Excel(エクセル)
-
9

UserForm1.Showでエラーになります。
工学
-
10

VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
11

ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
12

コンボボックスからテキストボックスに連続して値を出したい
Excel(エクセル)
-
13

VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14

テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
15

エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
16

ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
17

ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
18

エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
19

EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
20

任意で選択したセルをテキストボックスに表示
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
ExcelVBA No.を自動連番で設定...
-
エクセルVBA テキストボックス...
-
Excel-VBAでInputBox+Pulldown...
-
入力フォームの値をQRコードで...
-
VBAでInputBoxの再入力をさせる...
-
テキストボックスの番号を使っ...
-
教えて!全角文字「μ」の半角
-
DataGridViewの桁数制限に関して
-
X(元Twitter)で問題があり、お...
-
半角英数のみ入力可能
-
HTMLで全角文字のみ入力するに...
-
accessで該当するレコードがな...
-
excel vba でユーザーフォーム...
-
EXCEL VBA で指定した範囲に入...
-
入力モードを自動的に半角カタ...
-
FIREFOXでWebページを表示でき...
-
エディットボックスの入力制限...
-
PHPでフォームに自動入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
初歩的な事だと思います。 Sub...
-
テキストボックスの番号を使っ...
-
Excel-VBAでInputBox+Pulldown...
-
EXCEL VBA で指定した範囲に入...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
DataGridView 列ごとの入力制限
-
エディットボックスの入力制限...
-
入力フォームの値をQRコードで...
-
HTMLで全角文字のみ入力するに...
-
VBA R1C1形式で変数の入力について
-
TextBoxから数字が文字...
-
アクセスのマクロ
-
excel vba でユーザーフォーム...
-
DataGridViewの桁数制限に関して
-
Geminiって、Geminiの入力フォ...
-
c#でTextBoxの入力制限
-
教えて!全角文字「μ」の半角
-
「イ分」・・・フンという文字...
おすすめ情報
















【追記】わかりにくくてすみません…
シートの構成は、
・「登録」(フォームボタンのシート)
・「閲覧フォーマット」(データを日ごとに見るためのシート)
・「入力」(フォームで登録したデータを蓄積していくシート)
の3つです。