2017-09-19 10 views
1

ユーザーがセル内の特定のテキストのみを使用するように強制する方法はありますか? "Price"、 "Factor"、 "Adder"、 "Main"、 "+"、 " - "などの単語または記号のみを使用して、セルA1にテキストを書き込むことができます。 ((メイン・価格)+加算) が、強制的なテキストvba

+0

あなたはOK、リスト内のすべてのものに置き換え、そして「」でそれを置き換えることができます。セル内のテキストの長さを確認します。あなたが知っているよりも0より大きい場合は、他の文字が残ります。ヒント:最長のものから最初に置換を開始する必要があります。潜在的にスペースを取り除くためにクリーン/トリム機能を実行する必要があるかもしれません。 –

答えて

0

てみ上記1から任意の文字、単語や記号が異なる含まれていないテキスト:、「(」、「)」 ユーザーは次のように書くことができるようにこの

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim str As String 
    Dim arr(), item 

    arr = Array("Price", "Factor", "Adder", "Main", "+", "-", "(", ")") 'text allowed 
    str = Target.Value 

    If Not Application.Intersect(Target, Range("A1")) Is Nothing Then 'change A1 to your range 
     For Each item In arr 'replace all item in arr with "" 
      str = Replace(str, item, "") 
     Next item 

     If Len(Trim(str)) > 0 Then 
      MsgBox "Enter Correct Data", vbCritical, "Invalid Entry" 
      Application.EnableEvents = False 
      Target.Value = vbNullString  'if incorrect data entered make cell empty 
      Application.EnableEvents = True 
     End If 
    End If 
End Sub 
0

@Formardエドの提案に基づいて、あなたはsubstitute機能と組み合わせてdata validationを使用できます。受け入れ可能な値のリストを範囲E1:E8に入れてください。セルB1にこの関数を貼り付けます=LEN(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,$E$1,""),$E$2,""),$E$3,""),$E$4,""),$E$5,""),$E$6,""),$E$7,""),$E$8,"")))。あなたはセルA1に間違った値が入力された場合、セルに

A1data validationを作成し、customにできるように設定され、formula tabにこの式=B1=0 enter image description here

を入力します。今、データ検証を使用すると、値を入力することはできません。

enter image description here

+0

データ検証 '= yourformula = 0'で式を使用し、ヘルパー列を避けるのはなぜでしょうか? –

+0

それを試して、私にエラーを与えてください。 –

+0

もう一度試してみました。それは働いていて、= 0の部分を忘れていたに違いないでしょう:) –

関連する問題