
No.1ベストアンサー
- 回答日時:
こんにちは
登録もユーザーフォームから行うということで良いのですよね?
>住所や連絡先が同じであれば追加できない仕様にしたいです。
例えば、
・シートを直接編集できないように、保護をかけておきます
・フォームから登録の際(ボタンを押した際)にシート内の既登録データと
照合して、同じものがあれば登録しない
・なければ、マクロからシートに登録する
ようにしておけばよろしいかと思います。
>別のユーザーフォームで連動したリストとして表示させたいです
シートの内容をそのままリスト表示させたいのであれば、こんな感じでしょうか。
https://kosapi.com/post-4023/
No.3
- 回答日時:
#2の仮定で
例 UserForm1に書きます
Dim wsht As Worksheet
Dim r As Range
Private Sub CommandButton1_Click()
Dim Dic As Object
Set wsht = Worksheets("業者登録")
With UserForm2
'.ListBox1.AddItem ??
.ListBox2.AddItem Me.TextBox1.Value
Set Dic = CreateObject("Scripting.Dictionary")
For Each r In wsht.Range(wsht.Cells(2, 1), wsht.Cells(Rows.Count, 1).End(xlUp))
If Not Dic.exists(r.Value) Then
Dic.Add r.Value, 0
.ListBox1.AddItem r.Value '重複しない
.ListBox2.AddItem r.Offset(, 1).Value
Else
.ListBox2.AddItem r.Offset(, 1).Value '全リスト業者名
End If
Next
Set Dic = Nothing
.Show
End With
End Sub
UserForm2側は取敢えずコントロールの配置のみでOKのはず
>連絡先が同じであれば追加できない
例 TextBox2が連絡先
Dim wsht As Worksheet
Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Set wsht = Worksheets("業者登録")
If Application.CountIf(wsht.Range("D2", wsht.Cells(Rows.Count, 4).End(xlUp)), TextBox2.Value) > 0 Then
MsgBox "電話番号が重複しています"
Cancel = True
End If
End Sub
No.2
- 回答日時:
こんばんは
文字オーバーみたいなので説明とコードを分けて
下のユーザーフォームに上のユーザーフォームの値を登録(シート書き出し)前に入れると言う事でしょうか?
何故リストボックスなのでしょう?ここでまた変更すると言う事でしょうか
仮定(該当コントロール)
上がUserForm1
ListBox1とTextBox1 CommandButton1
下がUserForm2
ListBox1、ListBox2、CommandButton1
考えてみるとUserForm1.ListBox1の値ってシートリストのような気がするのですけれど違うのかな・・(書き込みできませんよね)
A列は一意でないので
UserForm2.ListBox1 <==UserForm1.ListBox1の値は意味が無いかな
ListBoxでなければ良いけれど・・
UserForm2.ListBox1 は シートリスト
UserForm2.ListBox2 <== UserForm1.TextBox1の値+シートリスト
UserForm1のCommandButton1_Click()でUserForm2を呼ぶ
RowSourceだとシートに書き出さないといけないのでAddItemを使います
UserForm2をわざわざ作らなくとも入力チェックをもう少し考えて作れば使い易くなりそうですね
あとComboBoxの方が入力ができるので良さそうかな
次に例(参考コード)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBA同じシートの別ブックに転記していく方法
Visual Basic(VBA)
-
vbaの計算 if elseと範囲について
Visual Basic(VBA)
-
ListBox1をClickしたときのイベント
Visual Basic(VBA)
-
4
【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。
Visual Basic(VBA)
-
5
ExcelのVBAでシフト表を作っていますが、バグが出て困っています
Visual Basic(VBA)
-
6
vba メモリ節約
Visual Basic(VBA)
-
7
【至急】 当方初心者です。 マクロについて知恵をお貸しください。 ★したい動作 ①リストE列2行目か
Visual Basic(VBA)
-
8
乱数の表示
Visual Basic(VBA)
-
9
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
10
初めてマクロを入力しますが、テキストとおりに入力したのに構文エラーです。修正を教えてください。
Visual Basic(VBA)
-
11
【VBAエラー】Nextに対するForがありません 対策について
Visual Basic(VBA)
-
12
Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S
Visual Basic(VBA)
-
13
textbox1についの質問
Visual Basic(VBA)
-
14
【マクロ】表への繰り返し転記について
Visual Basic(VBA)
-
15
VBAプログラミング
Visual Basic(VBA)
-
16
excel vba でユーザーフォーム入力ができない
Visual Basic(VBA)
-
17
合計額がゼロになってしまう
Excel(エクセル)
-
18
[Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。
Visual Basic(VBA)
-
19
ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています
Visual Basic(VBA)
-
20
日付を重複させずに数えたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
【VBA】指定した検索条件に一致...
-
5
ユーザーフォームに入力したデ...
-
6
【VBA】シート名に特定文字が入...
-
7
C#でExcelのシートを選択する方法
-
8
同じ作業を複数のシートに実行...
-
9
VBA 検索して一致したセル...
-
10
エクセルVBAでダブルクリックを...
-
11
excelのマクロで該当処理できな...
-
12
【VBA】特定の文字が入っている...
-
13
エクセルのマクロでアクティブ...
-
14
セルのコピーで「オブジェクト...
-
15
実行時エラー'1004': WorkSheet...
-
16
XL:BeforeDoubleClickが動かない
-
17
EXCEL VBA 別シートの同じ文字...
-
18
【Excel VBA】Worksheets().Act...
-
19
ExcelのVBAのマクロで他のシー...
-
20
VBA 存在しないシートを選...
おすすめ情報
公式facebook
公式twitter