Excelでセルを編集しているときは、セルの書式設定を少し簡単にすることができるいくつかの書式設定ツールバーボタンにアクセスできます。たとえば、太字または斜体のツールを使用して、セルで選択されたテキストのこれら2つの属性を変更できます。ある時点で、上付き文字や下付き文字の適用など、他の書式設定を処理するために他のツールバーボタンを作成したい場合があります。

ただし、Excelでは、独自の書式設定ツールを作成して、セルの編集中にそれらにアクセスすることはできません。これは、編集中にExcelがすべてのユーザー定義マクロを「非アクティブ化」するためです。

Format |を使用してセルの内容をフォーマットする必要があります。セル、またはCtrl + 1を押して、[セルの書式設定]ダイアログボックスを直接表示します。

ただし、独自のフォーマットツールを作成するために使用できる卑劣な方法があります。これには、ユーザーフォームとVBAを使用して、独自のフォーマット「ダイアログボックス」を作成することが含まれます。 (これは実際にはダイアログボックスではなく、フォームです。)独自のユーザーフォームを作成することはそれほど難しいことではありませんが、マクロに関しては気弱な人には向いていません。次の手順に従って、独自のフォームを作成します。

。 Ctrl + F11を押して、VBAエディターを表示します。

。 VBAエディターで、[挿入]メニューから[ユーザーフォーム]を選択します。新しい空白のユーザーフォームが、フォームツールボックスとともに表示されます。

。フォームツールボックスのコントロールを使用して、フォームの上部に3つのCommandButtonコントロールを追加します。

。左側のCommandButtonコントロールのプロパティを変更して、名前がbtnSuper、キャプションが上付き文字になるようにします。

。中央のCommandButtonコントロールのプロパティを変更して、名前がbtnSub、キャプションが下付き文字になるようにします。

。右側のCommandButtonコントロールのプロパティを変更して、名前がbtnNormal、キャプションがNormalになるようにします。

。 3つのボタンのすぐ下に、TextBoxコントロールを追加します。このコントロールのプロパティを変更する必要はありません。

。 TextBoxコントロールのすぐ下に、4番目のCommandButtonコントロールを追加します。

。この最後のCommandButtonコントロールのプロパティを変更して、名前がbtnExit、キャプションがExitになるようにします。

それでおしまい;ユーザーフォームを作成し、マクロコードを配置したばかりのコントロールに関連付ける準備ができました。ユーザーフォームを選択した状態でF7キーを押すと、フォームのコードウィンドウが表示されます。ウィンドウには、自動生成されたコードが1行か2行含まれている場合があります。これを次のコードに置き換えます:

Private Sub UserForm_Activate()

TextBox1.Text = ActiveCell.Formula End Sub
Private Sub btnSuper_Click()

Dim intStart As Integer     Dim intLength As Integer     intLength = TextBox1.SelLength     If intLength > 0 Then         intStart = TextBox1.SelStart + 1         ActiveCell.Characters(intStart, intLength).Font.Superscript = True     End If End Sub
Private Sub btnSub_Click()

Dim intStart As Integer     Dim intLength As Integer     intLength = TextBox1.SelLength     If intLength > 0 Then         intStart = TextBox1.SelStart + 1         ActiveCell.Characters(intStart, intLength).Font.Subscript = True     End If End Sub Private Sub btnExit_Click()

Unload UserForm1 End Sub
Private Sub btnNormal_Click()

Dim intStart As Integer     Dim intLength As Integer     intLength = TextBox1.SelLength     If intLength > 0 Then         intStart = TextBox1.SelStart + 1         ActiveCell.Characters(intStart, intLength).Font.Superscript = False         ActiveCell.Characters(intStart, intLength).Font.Subscript = False     End If End Sub

ユーザーフォームのコードウィンドウを閉じ、フォームウィンドウ自体を閉じます。次に、実際のユーザーフォームを表示する非常に短いマクロを作成する必要があります。このマクロは他のExcelマクロと同じように作成され、次のようになります。

Sub DoForm()

UserForm1.Show End Sub

これで、VBAエディタウィンドウを閉じることができます。マクロを使用するには、編集するセルを選択してから、DoFormマクロを実行します。 Excelは、選択したセルのテキストを含むユーザーフォームを表示します。

次に、ユーザーフォーム内のテキストを選択し、ボタン(上付き文字、下付き文字、および標準)を使用して、実際のセルの内容の書式を変更できます。マクロは、ユーザーフォームの内容ではなく、セルの内容に影響します。したがって、選択したセルとユーザーフォームの両方を画面に同時に表示できると便利です。

注:

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

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

このヒント(1945)は、Microsoft Excel 97、2000、2002、および2003に適用されます。