web-dev-qa-db-ja.com

Excelのドロップダウンセルへの貼り付けを制限する

多くのドロップダウン列を含む1つのExcelシートがあります。 1つの列にドロップダウンオプション値としてTest1、Test2、およびTest3があるとします。この列の下のセルは、これら3以外の値を受け入れません。これらのセルに「XYZ」をコピーして貼り付けると、受け入れられません。誰でもこれを処理する方法を手伝ってくれる?

6
Charan Raju C R

データ検証を設定する

Excelのデータ検証機能を使用して、セルを特定のテキストに制限します。あなたの場合: "Test1"、 "Test2"、および "Test3"

  1. 「Test1」、「Test2」、および「Test3」の値のみを受け入れるセルを選択します
  2. DataタブのData Toolsグループで、Data Validationボタンをクリックします。

    Data Validation Location in Office Ribbon

  3. Allow:ドロップダウンでListを選択します

  4. Source:フィールドにTest1、Test2、Testと入力します

    Data Validation Settings

  5. [〜#〜] ok [〜#〜]をクリックして変更を適用します。

この時点で、ステップ1で選択したすべてのセルにドロップダウンリストが関連付けられています。スプレッドシートのユーザーはTest1Test2、またはTestしか入力できません。他の何かを入力しようとすると、次のエラーメッセージが表示されます。

enter image description here

必要に応じて、上記の手順4のError Alertタブをクリックして、エラーメッセージテキストをカスタマイズできます。

データ検証済みセルのコピー/貼り付けを防止

これは、誰かがセルの上にコンテンツを貼り付ける場合を除いて、うまく機能します。これを防ぐ唯一の方法は、セルへの更新を検出し、セルでデータ検証が有効かどうかを判断し、trueの場合は貼り付けを拒否するマクロを記述することです。

  1. データの検証があるすべてのセルを選択し、それらに名前を付けますDataValidationRange。セルのアドレスが配置されている数式バーの左側に名前を入力して、セルの範囲に名前を付けることができます。
  2. ワークシートのコードモジュール(Sheet1など)で、次のコードを追加します。
 Private Sub Worksheet_Change(ByVal Target As Range)
 '検証範囲にまだ検証がありますか?
 If HasValidation(Range( "DataValidationRange"))Then 
 Exit Sub 
 Else 
 Application.Undo 
 MsgBox "エラー:これらのセルにデータを貼り付けることはできません。" &_ 
 "ドロップダウンを使用してデータを入力してください。"、vbCritical 
 End If 
 End Sub 
 
 Private Function HasValidation( r)As Boolean 
 '範囲rのすべてのセルがデータ検証を使用する場合にTrueを返します
エラー時に再開次へ
 x = r.Validation.Type 
エラーが発生した場合。数値= 0次にHasValidation = True HasEls HasValidation = False 
 End Function 

残念ながら、VBAは誰かがセルに貼り付けるのを防ぐ唯一の方法です。これは、最初からExcelのデータ検証の問題でした。それがどちらの方法でも役立つことを願っています。

7
user387876

より簡単な解決策は、ワークブックへの貼り付けを完全に無効にすることです。私はここでその解決策を見つけました: http://www.vbaexpress.com/kb/getarticle.php?kb_id=37

0
mjavon