リッチは、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以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。