セルの長さ制限の設定(Microsoft Excel)
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以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkセルの長さ制限の設定。