1桁のみを受け入れる(Microsoft Excel)
リッチは、1桁の数字を入力すると、自動的に次のセルに進むようにExcelを構成する方法を考えています。彼は、EnterキーまたはTabキーを押して、次のセルに移動することを排除したいと考えています。セル範囲のエントリの値は、常に1桁の正の数字になります。
これは、Excelのネイティブ構成設定では実行できません。
代わりに、エントリを処理するマクロを作成する必要があります。マクロの自然な選択は、ワークシートのChangeイベントを使用することです。これにより、値がセルに入力されるたびに、エントリが「引き離され」、行のセルに詰め込まれます。
Private Sub Worksheet_Change(ByVal Target As Range) If IsNumeric(Target.Value) Then CRow = Target.Row CColumn = Target.Column - 1 Entry = Target.Value For i = 1 To Len(Entry) Cells(CRow, CColumn + i).Value = Mid(Entry, i, 1) Next End If End Sub
このマクロは、最初に、入力されたものが数値であるかどうかを確認します。そうである場合、数字は値から抽出され、行の連続するセルに配置されます。
もちろん、このようなマクロの欠点は、イベントをトリガーするためにEnterキーを押す必要があることです。 Enterキーを完全に押すのをやめたい場合は、別のアプローチに頼る必要があります。
この手法は、OnKey関数を使用して、特定のキーストロークにマクロを割り当てます。次のコードを標準のマクロモジュールに配置します。
Sub Assigns() Dim i As Variant With Application For i = 0 To 9 .OnKey i, "dig" & i Next End With End Sub
Sub ClearAssigns() Dim i As Variant With Application For i = 0 To 9 .OnKey i Next End With End Sub
Sub dig0() ActiveCell.Value = 0 ActiveCell.Offset(1, 0).Select End Sub
Sub dig1() ActiveCell.Value = 1 ActiveCell.Offset(1, 0).Select End Sub
Sub dig2() ActiveCell.Value = 2 ActiveCell.Offset(1, 0).Select End Sub
Sub dig3() ActiveCell.Value = 3 ActiveCell.Offset(1, 0).Select End Sub
Sub dig4() ActiveCell.Value = 4 ActiveCell.Offset(1, 0).Select End Sub
Sub dig5() ActiveCell.Value = 5 ActiveCell.Offset(1, 0).Select End Sub
Sub dig6() ActiveCell.Value = 6 ActiveCell.Offset(1, 0).Select End Sub
Sub dig7() ActiveCell.Value = 7 ActiveCell.Offset(1, 0).Select End Sub
Sub dig8() ActiveCell.Value = 8 ActiveCell.Offset(1, 0).Select End Sub
Sub dig9() ActiveCell.Value = 9 ActiveCell.Offset(1, 0).Select End Sub
マクロを開始するには、Assignsマクロを実行します。その後、数字が入力されるたびに、その数字は現在のセルに詰め込まれ、右側の次のセルが選択されます。テキストを入力しても、何も起こりません。
(もちろん、B2Bなどの混合値を入力しようとした場合、「2」を押すと、セルに表示されます。)このタイプのデータ入力が完了したら、ClearAssignsマクロを実行します。終了します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(6614)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link1桁のみを受け入れる。