エクセルでデータベースを作り、ユーザーフォームにて
入力作業を行っています。
フォーム上にテキストボックスが2つ有り、
一つは日付、もう一つは名称を入力する仕様と
なっています。
またシートへの書き込みはコマンドボタンで
処理を行うようにしています。
このフォームで日付と名称を入力したときに、
そのデータをシートに書き込む前に
同じデータがすでにデータベースの中にある場合に
重複がある旨のメッセージダイアログを表示させたいと
思います。
処理条件としては、
1.日付、名称それぞれのテキストボックスを
抜けたとき(Private Sub TextBox1_Exit())に
処理させること
2.入力した日付と同じ日付のデータベースにおいて
名称が同じかどうかで判断すること
3.重複があればダイアログ表示、なければ何もなし
ちなみにデータベースはA列に日付、B列に名称が
入っているものとします。
また上に処理条件を記しましたが、もっと良い方法が
あれば加えてアドバイス願います。
VBA初心者ですので解説付きコードで教えてください。
(非常にあつかましいのですが、余り時間がないため、
明日の朝9時までにご回答頂けると非常に助かります。
その際、もっとも的確で早い回答をくださった方に
20ポイントつけさせて頂きます。)
どうぞ宜しくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
スルーしようかとも思いましたが、希望納期も過ぎましたし、そろそろいいでしょうかw
まずは苦言から。「20ポイント」も愉快ではありませんが、「VBA初心者」を自称しておきながら不完全な「処理条件」を堂々と突きつける辺りにあきれて補足要求する気にすらなれませんでした。「これがやりたい」とだけ書いていただく方が、余程気持ちよく回答できます。
aoincさんがお金を出して下請けに作らせるのなら、このような方法でも良いのでしょうが、なにせここは「自発的な」回答者ばかりですので…w
最初に前提を書きます。
入力したデータを書き込むシートは仮に「Sheet1」とします。その他に作業用シートとして「Sheet2」があるものとします。
データ件数も分からないのでシート関数を併用する方法を採りました。その方がFor~Next文を使うより高速と思ったからです。
UserForm1には
TextBox1 (日付入力用)
TextBox2 (名前入力用)
CommandButton1 (登録用)
Label1 (警告メッセージ用)
が配置されているものとします。その上でUserForm1のコードシートに以下を貼り付けてイミディエイトペインから
UserForm1.Show
で動かしてみてください。
フォーカスのコントロールは私の思いこみで書いています。データエラーチェックはしていませんので必要に応じて追加してください。またその他のコントロールについてはご自由になさってください。(そこまでは「処理条件」に書かれていませんでしたので…)
Option Explicit
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Label1.Caption = ""
CommandButton1.Enabled = True
Sheets("Sheet2").Range("A1") = TextBox1.Text
If Sheets("Sheet2").Range("A3") > 0 Then
Label1.Caption = "重複あり"
CommandButton1.Enabled = False
End If
End Sub
Private Sub TextBox2_change()
Label1.Caption = ""
Sheets("Sheet2").Range("A2") = TextBox2.Text
If Sheets("Sheet2").Range("A3") > 0 Then
Label1.Caption = "重複あり"
CommandButton1.Enabled = False
Else
CommandButton1.Enabled = True
End If
End Sub
Private Sub CommandButton1_Click()
Dim LastR As Long
LastR = Sheets("Sheet1").Range("A65536").End(xlUp).Row
Sheets("Sheet1").Cells(LastR + 1, 1) = TextBox1.Text
Sheets("Sheet1").Cells(LastR + 1, 2) = TextBox2.Text
Sheets("Sheet2").Range("A3").Formula = "=SUMPRODUCT((Sheet1!A2:A" & _
LastR + 1 & "=A1)*(Sheet1!$B$2:$B$" & LastR + 1 & "=A2)*1)"
TextBox2.Text = ""
Sheets("Sheet2").Range("A2") = TextBox2.Text
TextBox2.SetFocus
End Sub
Private Sub UserForm_Activate()
Dim LastR As Long
LastR = Sheets("Sheet1").Range("A65536").End(xlUp).Row
Sheets("Sheet2").Range("A3").Formula = "=SUMPRODUCT((Sheet1!A2:A" & _
LastR + 1 & "=A1)*(Sheet1!$B$2:$B$" & LastR + 1 & "=A2)*1)"
End Sub
動作は確認してありますが、解説は遠慮しておきます。ポイントも勿論いりません。
No.1
- 回答日時:
こんばんは。
10行もあればすむコードに何故回答がつかないのか、
それはたぶん最後の
>もっとも的確で早い回答をくださった方に20ポイントつけさせて頂きます
この余計なコメントのせいだろうと推測。
何にもならないポイント欲しさに回答する人、いないと思ふ。(^^;;;
何れにしろ人にものを教えてもらう態度ではない。
以上。
お探しの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
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Microsoft ASP グーグルフォーム 1 2022/12/30 18:16
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAで重複チェックの仕方を教えてください
Visual Basic(VBA)
-
【EXCEL】UserFormで入力して 重複したデータがあった場合 上書きかキャンセルかを表示させたい。
Excel(エクセル)
-
VBE ユーザーフォーム重複・空白チェック(VBE初心者)
Visual Basic(VBA)
-
-
4
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
5
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
6
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
7
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
10
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
11
VBA 見つからなかった時の処理
Excel(エクセル)
-
12
エクセルマクロ:複数列 重複があった場合、メッセージと印入れる方法
Excel(エクセル)
-
13
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
-
14
VBAで重複するデータがあれば1個だけ残して他の重複セルを"(空白)にしたいのですが
Excel(エクセル)
-
15
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IFとIFS関数
-
Excelを無料で使うには? パソ...
-
セルの数を求めたい
-
エクセルの数式バーのフォント...
-
Excelの表示についての質問
-
再質問です。マクロの修正箇所...
-
データチェックを行うエクセル...
-
Excelに詳しい方! B列が「日...
-
西暦や和暦の表示をyyyymmdd表...
-
Excelで50個のセルに同じ文字を...
-
Excelの数式について教えてくだ...
-
Excel VBAで全ての矢印を赤色に...
-
エクセル関数を使って
-
祝日と土曜、日曜の合計をカウ...
-
xlsxファイルを保存する際にPDF...
-
Excelについて
-
エクセルVBA、別ブックへ転記す...
-
エクセルで「ページレイアウト...
-
2列に入っているデータを1列...
-
【ExcelVBA】名前を付けて保存→...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報