多くのドロップダウン列を含む1つのExcelシートがあります。 1つの列にドロップダウンオプション値としてTest1、Test2、およびTest3があるとします。この列の下のセルは、これら3以外の値を受け入れません。これらのセルに「XYZ」をコピーして貼り付けると、受け入れられません。誰でもこれを処理する方法を手伝ってくれる?
Excelのデータ検証機能を使用して、セルを特定のテキストに制限します。あなたの場合: "Test1"、 "Test2"、および "Test3"
DataタブのData Toolsグループで、Data Validationボタンをクリックします。
Allow:ドロップダウンでListを選択します
Source:フィールドにTest1、Test2、Testと入力します
[〜#〜] ok [〜#〜]をクリックして変更を適用します。
この時点で、ステップ1で選択したすべてのセルにドロップダウンリストが関連付けられています。スプレッドシートのユーザーはTest1、Test2、またはTestしか入力できません。他の何かを入力しようとすると、次のエラーメッセージが表示されます。
必要に応じて、上記の手順4のError Alertタブをクリックして、エラーメッセージテキストをカスタマイズできます。
これは、誰かがセルの上にコンテンツを貼り付ける場合を除いて、うまく機能します。これを防ぐ唯一の方法は、セルへの更新を検出し、セルでデータ検証が有効かどうかを判断し、trueの場合は貼り付けを拒否するマクロを記述することです。
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のデータ検証の問題でした。それがどちらの方法でも役立つことを願っています。
より簡単な解決策は、ワークブックへの貼り付けを完全に無効にすることです。私はここでその解決策を見つけました: http://www.vbaexpress.com/kb/getarticle.php?kb_id=37