Sheilaには、一連の4桁の数字を入力する必要があるワークシートがあります。彼女は、各エントリ間でEnterキーまたはTabキーを押す必要がない方法を望んでいます。つまり、4桁目が押されるたびに、SheilaはExcelが自動的に次のセルに進むことを望んでいます。

Excelは、このタイプのデータ入力をオプションとして提供していません。ただし、データ入力を処理するマクロを作成することはできます。 1つの方法は、ユーザーに文字列の入力を求める単純なマクロを使用することです。ユーザーがEnterキーを押すと(文字列が完全であることを示すため)、マクロは連続する4文字のチャンクをそれぞれ取得し、それらを連続するセルに配置します。

Sub FourCharEntry1()

Dim str As String     Dim x As Integer     Dim y As Integer

str = InputBox("Enter string")

y = 0     For x = 1 To Len(str) Step 4         ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4)

y = y + 1     Next End Sub

マクロは4文字のチャンクをセルに配置しているため、各チャンクの前にアポストロフィが付いていることに注意してください。これは、4文字のチャンクが数字のみで構成されていて、それらの数字が1つ以上のゼロで始まる場合に、これらのインスタンスを処理するためです。アポストロフィを追加すると、Excelがセルエントリをテキストとして扱い、先頭のゼロが消去されないようにします。

また、ワークシートのセルに誰かがテキストを入力できるようにするだけで、InputBoxの使用を回避することもできます。その人は好きなだけタイプすることができます(必要に応じて数千文字)。

次に、セルを選択した状態で、セルから情報を取得して同じタスクを実行するマクロを実行し、4文字のチャンクに分割します。次のマクロはまさにそれを行います:

Sub FourCharEntry2()

Dim str As String     Dim x As Integer     Dim y As Integer

str = ActiveCell.Value     y = 0     For x = 1 To Len(str) Step 4         ActiveCell.Offset(0, y) = "'" & Mid(str, x, 4)

y = y + 1     Next End Sub

別のアプローチは、ユーザー入力にカスタムユーザーフォームを使用することです。フォームはVBAとのより豊富な相互作用を提供するため、4文字ごとに入力した後、実際に情報をセルに詰め込むことができます。

テキストボックスとボタンの2つのコントロールを含むユーザーフォーム(_ExcelTips_の他の問題で説明されている)を作成することから始めます。テキストボックスにvTextという名前を付け、次のコードを関連付けます。

Private Sub vText_Change()      If Len(vText) = 4 Then         ActiveCell = vText         ActiveCell.Offset(0, 1).Activate         UserForm1.vText.Value = ""

End If End Sub

これは、テキストボックスの内容が変更されるたびに(つまり、各文字を入力するときに)実行され、そこに含まれるものの長さをチェックします。長さが4に達すると、コードはそれらの文字を取得してセルに詰め込みます。その後、vTextの内容は空になります。

ユーザーフォームで作成するボタンの名前は、実際には重要ではありません。これは、ユーザーフォームを閉じる方法として使用され、次のコードが関連付けられている必要があります。

Private Sub Cancel_Click()

Unload UserForm1 End Sub

ユーザーフォームを使用する準備ができたら、入力を開始するセルを選択して、次のマクロを実行します。

Sub Start()

UserForm1.Show End Sub

ユーザーフォームが表示され、入力を開始できます。完了したら、ボタンをクリックするだけでユーザーフォームが閉じます。

注:

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

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

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