Craigはワークシートを開発しており、特定のセルに入力できる最大文字数を指定する方法があるかどうかを知りたいと考えています。彼は、データ検証を使用して制限を課すことを望んでいません。

(Craigが言及しているように)Excelでこれを直接行う方法はありません

データ検証を使用します。ただし、目的の効果を達成するために試みることができることがいくつかあります。まず、数式を使用してセルの長さを確認し、必要に応じてエラーメッセージを表示できます。たとえば、チェックするセルが列Cにある場合、次のような数式を使用できます。

=IF((LEN(C1)>15),"Cell is Too Long","")

数式をチェック対象のセルの右側のセル(セルD1など)に配置し、必要な数のセルにコピーします。

C1で入力した場合、15文字を超えると、メッセージが表示されます。

このような直接的なアプローチが望ましくない場合は、マクロを使用してチェックを行う必要があります。以下は、ワークシートで何かが変更されるたびにトリガーされる簡単な例です。次に、ワークシートの各セルをチェックして、15文字以下であることを確認します。そのようなセルが検出されると、メッセージボックスが表示され、セルがクリアされます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

For Each cell In UsedRange         If Len(cell.Value) > 15 Then             MsgBox " Can't enter more than 15 characters"

cell.Value = ""

End If     Next End Sub

より堅牢なアプローチは、イベントハンドラーをチェックインして、長さを制限する必要があるセルの範囲内のどこかで変更が行われたかどうかを確認することです。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rng As Range     Dim rCell As Range     Dim iChars As Integer     On Error GoTo ErrHandler

'Change these as desired     iChars = 15     Set rng = Me.Range("A1:A10")



If Not Intersect(Target, rng) Is Nothing Then         Application.EnableEvents = False         For Each rCell In Intersect(Target, rng)

If Len(rCell.Value) > iChars Then                 rCell.Value = Left(rCell.Value, iChars)

MsgBox rCell.Address & " has more than" _                   & iChars & " characters." & vbCrLf _                   & "It has been truncated."

End If         Next     End If

ExitHandler:

Application.EnableEvents = True     Set rCell = Nothing     Set rng = Nothing     Exit Sub

ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

このマクロを使用するには、iCharsに割り当てられた値(許可される最大長を表す)とrngに割り当てられた範囲(現在はA1:A10に設定されています)を変更するだけです。マクロは指定された範囲内の変更のみをチェックするため、ワークシートが大きい場合は、使用されているすべてのセルをチェックするマクロよりもはるかに高速です。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3150)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。