Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4385 / 13646 ツリー ←次へ | 前へ→

【56870】Changeイベントが動きません こまったわんこ 08/7/9(水) 12:13 質問[未読]
【56871】Re:Changeイベントが動きません kanabun 08/7/9(水) 12:26 発言[未読]
【56872】Re:Changeイベントが動きません こまったわんこ 08/7/9(水) 12:34 質問[未読]
【56877】Re:Changeイベントが動きません kanabun 08/7/9(水) 14:34 発言[未読]
【56986】Re:Changeイベントが動きません こまったわんこ 08/7/16(水) 15:34 お礼[未読]

【56870】Changeイベントが動きません
質問  こまったわんこ  - 08/7/9(水) 12:13 -

引用なし
パスワード
   ユーザフォーム2個を利用してマクロを組んでいます。

◆シート1
  各支店の支店コードと支店名がはいっています。

◆シート2
  ユーザフォーム1で入力されたデータが入っています。

◆ユーザフォーム1
  テキストボックス1 … 支店コードを入力
  テキストボックス2 … 支店名を入力
  テキストボックス3 … 訪問した日付を入力
  コマンドボタン1  … テキストボックスの内容をシート2に記入させる
◆ユーザフォーム2にはテキストボックスが2つ
  テキストボックス1 … 支店コードを入力
  テキストボックス2 … 支店名を入力
  コマンドボタン1  … テキストボックスの内容をシート1に記入させる

ユーザフォーム1のテキストボックス1に支店コードを入力するとChangeいべんとで
シート1の支店コードを検索し、テキストボックス2に表示します。
テキストボックス1に「99999」と入力すると、ユーザフォーム2を表示します。
(ユーザフォームは表示したままにしています。)

ユーザフォーム2では、新規に登録したい支店コードをテキストボックス1に、
テキストボックス2には支店名を入力するようにしています。
このときユーザフォーム2で支店コードの重複がないかChangeイベントで
監視をしたいのですが、Changeイベントが動いてくれません。
これっていったいなせでしょうか。
(Changeイベント同士が競合するのかな?)

【56871】Re:Changeイベントが動きません
発言  kanabun  - 08/7/9(水) 12:26 -

引用なし
パスワード
   ▼こまったわんこ さん:
>ユーザフォーム1のテキストボックス1に支店コードを入力するとChangeいべんとで
何のChangeイベントですか?
テキストボックス1のChangeイベントですか?
もしそうなら、1文字入力するごとに Changeイベントは 発生しています。
>

>このときユーザフォーム2で支店コードの重複がないかChangeイベントで
>監視をしたいのですが、Changeイベントが動いてくれません。
これも、
どこのChangeイベントですか?

【56872】Re:Changeイベントが動きません
質問  こまったわんこ  - 08/7/9(水) 12:34 -

引用なし
パスワード
   ▼kanabun さん:
>▼こまったわんこ さん:
>>ユーザフォーム1のテキストボックス1に支店コードを入力するとChangeいべんとで
>何のChangeイベントですか?
>テキストボックス1のChangeイベントですか?
>もしそうなら、1文字入力するごとに Changeイベントは 発生しています。
>>
>
>>このときユーザフォーム2で支店コードの重複がないかChangeイベントで
>>監視をしたいのですが、Changeイベントが動いてくれません。
>これも、
>どこのChangeイベントですか?

レスありがとうございます。
言葉足らずでもうしわけありません。

>>ユーザフォーム1のテキストボックス1に支店コードを入力するとChangeいべんとで

テキストボックス1のChangeイベントです。

>>このときユーザフォーム2で支店コードの重複がないかChangeイベントで
>>監視をしたいのですが、Changeイベントが動いてくれません。

ユーザフォーム2のテキストボックス1のChangeイベントです。

【56877】Re:Changeイベントが動きません
発言  kanabun  - 08/7/9(水) 14:34 -

引用なし
パスワード
   前述のように、テキストボックスのChangeイベントは
1文字入力されるたびに発生しますから、入力途中の
支店コードをキー入力があるたびにチェックしても
重複チェックはできないです。
そこで、提案なのですが、
UserForm1の支店コードを入力するTextBox1 を
ComboBoxコントロールに置き換えてみてはいかがでしょうか?
そうすると、ユーザーは ComboBox1から既存リストの一覧を
選択するだけで、コードと対応する支店名をTextBox2 に
表示することができます。いちいちコードをタイプする必要
はなくなりますし、コードがどの支店名のものであるかを
ビジブルに確認できます。
また、こうすると、
UserForm1の[新規登録]ボタンを押して、UserForm2 を表示して
新規コードと支店名を登録するときも、UserForm1のComboBox1
が使っているセル範囲をすぐ参照して、すでに既存のコードが
がないかチェックするのも容易になります。

'----------------------------------------------- UserForm1
Option Explicit
Private Sub UserForm_Initialize()
 Call Update支店コード表
End Sub

Sub Update支店コード表() 'UserForm1とUserForm2 から呼ばれるプロシージャ
 Dim rg As Range
 With Worksheets("Sheet1")
   Set rg = .Range("A2", .Cells(Rows.Count, 1).End(xlUp)).Resize(, 2)
 End With
 With ComboBox1
   .ColumnCount = 2
   .ColumnWidths = "40;50"
   .ColumnHeads = True
   .RowSource = rg.Address(External:=True)
 End With
End Sub

Private Sub ComboBox1_Change()
  Dim i As Long
  i = ComboBox1.ListIndex
  If i < 0 Then Exit Sub
  TextBox2.Text = ComboBox1.List(i, 1)
  TextBox3.Text = ""
End Sub

Private Sub btn新規_Click()
 UserForm2.Show 0
End Sub

'----------------------------------------------- UserForm2
Option Explicit

Private Sub btn新規登録_Click()
  Dim sCode As String
  Dim sName As String
  Dim rg As Range
  Dim m
  
  sCode = TextBox1.Text
  sName = TextBox2.Text
  If Len(sCode) < 2 Then Exit Sub
  If Len(sName) < 1 Then Exit Sub
  
  Set rg = Excel.Range(UserForm1.ComboBox1.RowSource)
  m = Application.Match(sCode, rg.Columns(1), 0)
  If IsNumeric(m) Then
    MsgBox rg.Item(m, 1) & vbTab & rg.Item(m, 2) & vbCr _
    & "は すでに登録されています"
  Else
    '---- 新規支店セット
    With rg
      .Item(rg.Rows.Count + 1, 1).Value = sCode
      .Item(rg.Rows.Count + 1, 2).Value = sName
    End With
    UserForm1.Update支店コード表
  End If
End Sub

【56986】Re:Changeイベントが動きません
お礼  こまったわんこ  - 08/7/16(水) 15:34 -

引用なし
パスワード
   ▼kanabun さん:
連絡が遅くなり申し訳ありません。
ご教示いただいた方法で取り組みたいと思います。
ありがとうございました。

4385 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free