2016-11-30 11 views
0

ユーザーがドロップダウンリストから列内の値を選択していることを確認しようとしています。リストは別のページにあります。また、ユーザーが「貼り付け」を使用してドロップダウンリストを上書きしている場合は、同じことを警告するメッセージボックスをポップアップする必要があります。私はVBAマクロユーザーにドロップダウンリストから値を選択させる

敬具を使ってこれを実現するにはどうすればよい

+0

は、なぜあなたはデータの検証に使用することはできませんか? – tjb1

+1

このOPには2つの質問があります。(1)データの検証(2)データの検証の上書きによる貼り付けの防止。どちらも前に尋ねられます。 – Rosetta

答えて

-1

ようTjb1が言う

gmainak、

使用したデータの検証(許可タブ区切りのデータで見つかった - リスト)あなたの選択にリストをロックして、タブを非表示にするか、リストを含むタブをロックしてください。

データの検証によって、入力メッセージを追加することができますまたはエラーアラートを表示してユーザーに通知します。

+0

ユーザーが値を貼り付ける場合、このソリューションは機能しません。 – user3819867

+0

私はこれを解放しなかった、ありがとう –

0

Validationを設定する必要があります。人々が貼り付けてセキュリティ対策を超えている場合は、解決策にもっと頼る必要があります:
Worksheet_ChangeイベントでTargetの各セルをチェックできる簡単な関数を作成しました。
免責事項:これらの条件を理解していないと、私たちは責任を負いません。この場合、基本的なことについてもっと読む必要があります。

Function isValid(rng As Range) As Boolean 
'isValid = rng.Validation.Formula1 
Dim str As String, formstr As String, rng2 As Range, rng3 As Range 
str = rng.Validation.Formula1 
'str = Replace(str, "INDIREKT", "INDIRECT") 'hungarian specific 
Set rng2 = Evaluate(str) 
For Each rng3 In rng2 
    If rng3 = rng Then 
     isValid = True 
     Exit Function 
    End If 
Next rng3 
End Function 
0

場所ドロップダウンワークシートのコードウィンドウでこのコード:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = $A$1 Then '<--| change $A$1 to actual address of your dropdown cell 
     If Not Application.CutCopyMode = False Then 
      MsgBox "Warning !!" & vbCrLf & vbCrLf & "You are NOT allowed to paste over the drop-down list" 
      Application.CutCopyMode = False 
     End If 
    End If 
End Sub 
関連する問題