[[20050425224445]] 『入力規則』(ポー) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『入力規則』(ポー)

今、入力規則(ドロップダウンリスト)に名前が入っていて、そこから名前を選択するようにしています。
そこで、そのリスト内にない新規の名前を入力したら
メッセージボックスが出てきて、(「新規の名前を登録しますか?」みたいな・・・)
Yes Or No でYesだったらリストに追加するみたいなプログラムが出来たら教えていただきたいです。お願いします
エクセル2002 XP です


 面白そうなので、勉強かてがて作って見ました。
Sheet2のA1〜名前が入っていて範囲名が「リスト」としています。
Sheet1のA1に入力規則のリストを設定しています。Sheet1モジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim LastR As Long

    If Target.Address <> "$A$1" Then Exit Sub

    With Worksheets("Sheet2")
        LastR = .Range("A36636").End(xlUp).Row

        Set c = .Range("A1:A" & LastR).Find(Target.Value, , xlValues, _
            xlWhole, xlByColumns, xlPrevious, True)

        If c Is Nothing Then
            If vbNo = MsgBox("この名前をリストに追加しますか?", _
                vbYesNo, "名前の追加の確認") Then
                Exit Sub
            End If

            .Range("A" & LastR + 1).Value = Target.Value
            ActiveWorkbook.Names.Add Name:="リスト", _
                RefersTo:="=Sheet2!A1:A" & LastR + 1
        End If
    End With
 End Sub
(ケン)


 Sheet2のA1〜名前が入っていて
Sheet1のB1に入力規則のリストを設定している場合どんな式になりますか?
A1がかぶってしまってどういう組み立てかわからなくなってしまいました。
違いがわかりやすくなるようにB1でしたらどうなるかお願いします。

 If Target.Address <> "$B$1" Then Exit Sub
(ケン)

 おはようございます。
ちょっとケンさんのコードをお借りして私なりにやってみましたがどうでしょうか?
入力規則もコードの中で作ります。
D1に何か入力してみてください。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Dim LastR As Long
If Target.Address <> "$D$1" Then Exit Sub
Application.EnableEvents = False
    With Worksheets("Sheet2")
        LastR = .Range("A36636").End(xlUp).Row
        Set c = .Range("A1:A" & LastR).Find( _
                Target.Value, , xlValues, xlWhole, xlByColumns, xlPrevious, True)
        If c Is Nothing Then
            If vbNo = MsgBox("この名前をリストに追加しますか?", _
                vbYesNo, "名前の追加の確認") Then
                Application.EnableEvents = True
                Exit Sub
            End If
            .Range("A" & LastR + 1).Value = Target.Value
            .Range("A1:A" & LastR + 1).Name = "リスト"
        End If
    End With
    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=リスト"
        .ShowError = False
    End With
Application.EnableEvents = True
End Sub
失礼!入力規則を作る順番が逆でしたね。訂正しました。
またまた、失礼!追加しない時に
Application.EnableEvents = True
を追加しました。すみません。
どうでしょうか?
(SoulMan)


どうもうまくいきません

Sheet1モジュールってのはどういう意味でしょう?
モジュールってシートごとに区別できるんですか??


 ありゃ、シートの見出しを右クリック→コードを表示させてそこに貼り付けます。
どうでしょうか?
サンプルです。
右クリックして対象ファイルを保存してからお試しください。
http://ryusendo.no-ip.com/cgi-bin/upload/src/up0298.xls
もう、寝ますzzzzz
(SoulMan)

 


入力位置をD1だけではなく、D2やD3にも入力場所を作りたいのですが、その場合はどうのように、変更すればよろしいでしょうか?教えて下さい。
よろしく御願い致します。

 回答じゃなくてごめんなさい。
 古いスレッドを上げられたようですが、貴方はどなたですか〜? (ポー)さん?
 最近またハンドルネームのない投稿が目立っているように感じます。
 ご自分が質問されたスレッドであっても、誰の発言なのかわかるようにハンドルネームを
 記入しましょう?
 もちろん回答される方もですよ〜? 
 また、過去の内容を参照していてわからないことがあったのなら、新しくスレッドを
 作って、どのスレからの引用なのか明示のうえ、質問されたほうがよいのではと思います。
 この場をお借りして、一利用者からのお願いでした。m(_ _)m
(かなれっと)

すみませんでした。m(_ _)m
はじめての投稿でしたのでご迷惑をおかけしました。
かなれっとさんの言う通りです。
はじめての投稿者(みーたん)

 cf.
 (みーたん)さんの続きはこちらで解決済みです。
[[20060825122701]]『簡易リストBoxへの自動追加』(みーたん)

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.