次の方法で共有


Office 2010 の VBA 開発の基礎知識

Office Visual How To

概要:  プログラマ以外のユーザーを対象に、VBA プログラミングを使用して Microsoft Office 2010 の機能を拡張する方法について説明します。具体的には、VBA 言語の概要、さまざまな Office 2010 アプリケーションで VBA にアクセスする方法、プログラミングの例、および VBA を使用するサンプル アプリケーションを示します。

適用対象: Excel 2010 | Office 2010 | Open XML | PowerPoint 2010 | VBA | Word 2010

公開: 2010 年 9 月

提供元:   Peter Gruenbaum、SDK Bridge, LLC (英語)

概要

Visual Basic for Applications (VBA) for Office 2010 を使用すると、Office スイートの各アプリケーションに新しい機能を追加できます。たとえば、Word 文書内の 50 個の表に繰り返し変更を適用したり、文書が開くときにユーザーの入力を求めるようにしたり、Outlook の連絡先を Excel ワークシートに効率的に移動したりできます。

Office 2010 スイートのアプリケーションには豊富な機能が用意されています。いくつもの方法で文書、電子メール、データベース、フォーム、ワークシート、およびプレゼンテーションを作成、書式設定、および操作できます。Office 2010 の VBA プログラミングの大きな利点は、マウス、キーボード、またはダイアログ ボックスを使って実行できるすべての操作を VBA でも実行できることです。しかも、VBA で 1 回実行できる操作であれば、100 回でも 1000 回でも同じように簡単に行うことができます。また、VBA を使用して Office アプリケーションに新しい機能を追加することもできます。たとえば、それぞれのビジネス ニーズに合わせた方法で、文書のユーザーに操作を促すことができます。

Office の VBA プログラミングの使用を検討すべき理由は、次のようにいくつもあります。

1. 自動化と繰り返し。 VBA は、書式設定や修正を繰り返し実行する手段としてきわめて効果的です。VBA を使用して自動化できる繰り返し処理の例として、Word の各ページの先頭の段落のスタイルを変更する、Excel から Word または Outlook の電子メールに貼り付けた複数の表の書式を再設定する、Outlook の連絡先に繰り返し変更を加えるなどの操作が挙げられます。手動で行うことができる書式設定や編集の操作は、ほぼすべて VBA でも行うことができます。

2. 拡張。 標準アプリケーションの一部ではない特定の方法で Office アプリケーションやドキュメントを操作するようにユーザーに促す (ときには強制する) ことが必要になる場合があります。たとえば、ドキュメントを開く、保存する、または印刷するときに、何か特定の操作を行うようにユーザーに求めることがあります。

3. Office 2010 アプリケーションどうしのやりとり。 VBA を使用すると、Outlook のすべての連絡先を Word に移動することや、Excel ワークシートのデータを一連の PowerPoint スライドに移動することができます。ユーザーが行うコピーと貼り付けの操作に比べて VBA は高速で、自在に制御できます。

VBA プログラミングは強力なソリューションです。しかし、必ずしも最適な手段とは限りません。ときには、別の方法で目的を果たした方が賢明な場合もあります。VBA プロジェクトを開始する前に、組み込みのツールや標準機能の使用を検討してください。たとえば、時間のかかる編集やレイアウトの作業がある場合、スタイルやキーボード ショートカットを使用して問題を解決することを検討してください。1 回行った操作を、Ctrl + Y キー (やり直し) を使用して繰り返すことができる場合があります。または、適切な書式やテンプレートを使用して新しいドキュメントを作成した後で、コンテンツをその新しいドキュメントにコピーするという方法もあります。

この Visual How To では、プログラマ以外のユーザーが VBA を使い始めるための方法を紹介します。VBA オブジェクトを通じて Office ドキュメントを操作する方法を説明し、簡単なプログラミングの例を示します。

コード化する

この記事には、さまざまな VBA マクロのサンプル コードが含まれています。このセクションでは、次の項目について説明します。

  • Office 2010 アプリケーションで [開発] タブを有効にする方法

  • マクロの記録

  • VBA の例 1: Excel のセルの罫線の変更

  • VBA の例 2: 分岐とループ

  • VBA の例 3: Outlook の電子メールの作成

  • VBA の例 4: Excel の空の行の削除

  • VBA の例 5: Office アプリケーションどうしのデータのコピー

VBA を使用するには、Visual Basic コードを使用してマクロを作成します。VBA のプログラミングの方法については、「手順」セクションを参照してください。

[開発] タブの有効化

すべての Office 2010 アプリケーションではリボンが使用されています。リボンのタブの 1 つに [開発] タブがあり、ここから Visual Basic Editor や他の開発ツールにアクセスできます。Office 2010 では、[開発] タブが既定では表示されないので、次の手順を実行して有効にする必要があります。

  1. [ファイル] タブの [オプション] を選択して [オプション] ダイアログ ボックスを開きます。

  2. ダイアログ ボックスの左側にある [リボンのユーザー設定] をクリックします。

  3. ダイアログ ボックスの左側にある [コマンドの選択] で、[基本的なコマンド] を選択します。

  4. ダイアログ ボックスの右側にある [リボンのユーザー設定] のドロップダウン リストから [メイン タブ] を選択し、[開発] チェック ボックスをオンにします。

  5. [OK] をクリックします。

> [!NOTE] >

2007 バージョンの Microsoft Office アプリケーションでは、Office ボタンを使用して [オプション] ダイアログ ボックスを開きます。[基本設定] カテゴリで、[[開発] タブをリボンに表示する] をクリックします。

[開発] タブを有効にすると、そこに [Visual Basic] ボタンと [マクロ] ボタンがあることもすぐにわかります。

図 1. [開発] タブのボタン

[開発] タブのボタン

[開発] タブの [マクロ] ボタンをクリックすると、[マクロ] ダイアログ ボックスが表示されます。ここから、特定の文書またはアプリケーションからアクセスできる VBA サブルーチンまたはマクロにアクセスできます。[Visual Basic] ボタンをクリックすると、Visual Basic Editor が表示され、VBA コードの作成と編集を行うことができます。

マクロの記録

Word 2010 および Excel 2010 の [開発] タブには [マクロの記録] という別のボタンがあり、このボタンを使用すると、アプリケーションで実行したアクションを再現できる VBA コードが自動的に生成されます。[マクロの記録] は、VBA の理解を深めるのに有用なツールです。この機能によって生成されるコードを読み解くことで VBA をより深く理解することができ、ユーザーとしての Office 2010 の知識とプログラマとしての知識を確実に結び付けることができます。マクロのエディターはユーザーの意図をある程度推測する必要があり、その推測は必ずしも正確とは限らないので、生成されるコードがわかりにくい場合があることに注意してください。

  1. Excel 2010 で新しいブックを開くか、Word 2010 で新しい文書を開きます。

  2. リボンの [開発] タブをクリックします。[マクロの記録] をクリックし、[マクロの記録] ダイアログ ボックスで、マクロ名を "Macro1" にし、マクロの保存先を "作業中のブック" にするなど、既定の設定をすべてそのまま使用します。

  3. [OK] をクリックしてマクロの記録を開始します。ボタンに表示されるテキストが [記録終了] に変わることに注意してください。記録するアクションが完了したら、このボタンをクリックします。

  4. セル B1 をクリックし、「Hello World」という文字列を入力します。入力を終えて [記録終了] ボタンを見ると、ボタンは淡色表示になっています。これは、セルへの値の入力が終了するのを Excel 2010 が待っているからです。

  5. セル B2 をクリックして セル B1 へのアクションを完了し、[記録終了] をクリックします。

  6. [開発] タブの [ マクロ] をクリックし、まだ選択されていなければ [Macro1] を選択し、[編集] をクリックして Macro1 のコードを Visual Basic Editor で表示します。

図 2. 記録したマクロが表示されている Visual Basic Editor

Visual Basic Editor に記録されたマクロが表示されている

作成したマクロは次のコード例のようになっています。

Sub Macro1()
'
' Macro1 Macro
'
'
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Hello World"
    Range("B2").Select
End Sub

このコードでは、セル B1 を選択し、アクティブになったセルに文字列 "Hello World" を適用しています。テキストを囲む引用符は、これが数値ではなく文字列値であることを示しています。

最後の行は、セル B2 をクリックして [記録終了] ボタンを再び表示したときの操作です。マクロ記録では、すべてのキー入力が記録されます

アポストロフィで始まり、エディターに緑色の文字で表示されるコード行はコメントです。コメントは、コードについて説明したり、他のプログラマにコードの目的を知らせたりするためのテキストです。VBA では、単一引用符で始まる行または行の一部は無視されます。わかりやすく適切なコメントをコードに記入することは重要なテーマですが、それについて説明することはこの Visual How To の主旨を外れます。以下でこのコードについて触れるときは、これら 4 つのコメント行は割愛します。

> [!TIP] >

すべての VBA マクロでは、Application オブジェクトが暗黙的に指定されます。記録したコードは Application オブジェクトを使用して動作します。

開発者用ヘルプの使用

マクロ記録では、コードの生成時に複雑なアルゴリズムを使用して、ユーザーの意図するメソッドとプロパティが判断されます。見覚えがないプロパティがあっても、解釈の手がかりとなるリソースはたくさんあります。たとえば、記録したマクロの内部に、ForumulaR1C1 プロパティを参照するコードが生成されたとします。このプロパティが何を意味するかまったくわからないときは、開発者用ヘルプを使用して調べることができます。

記録したマクロの ForumulaR1C1 を選択し、F1 キーを押します。ヘルプ システムで検索が行われ、Excel 2010 ヘルプの Excel 2010 開発者用ヘルプ セクションに適切なトピックがあることが確認され、一覧に ForumulaR1C1 プロパティが表示されます。このリンクをクリックすると詳細な情報を表示できますが、そうする前にウィンドウの下部近くに [Excel オブジェクト モデル リファレンス] というリンクがあることに注目してください。このリンクをクリックして Excel 2010 のオブジェクト モデルで使用される多数のオブジェクトを示す一覧を表示すると、ワークシートとそのコンポーネントに関する説明を参照できます。一覧でいずれかのオブジェクトをクリックすると、そのオブジェクトに対応するプロパティおよびメソッドと、別の関連トピックへの相互参照が表示されます。多くのヘルプ項目には、役に立つ簡単なコード サンプルも含まれています。たとえば、Borders オブジェクトの関連リンクを使用して VBA で罫線を設定する方法を参照できます。

Worksheets(1).Range("A1").Borders.LineStyle = xlDouble


> [!NOTE] >

この Borders コードと前に記録したマクロには違いが見られます。オブジェクト モデルのわかりにくい点の 1 つは、特定のオブジェクト (ここではセル A1) を扱う方法がいくつもあることです。

VBA の例 1: Excel のセルの罫線の変更

最初の例の ExcelBorders は、セル A1 に "Wow!" という値を入れ、罫線のスタイルを二重線に設定します。ここでは Excel 2010 ヘルプの開発者用ヘルプ セクションにある前述のコードを使用します。

Excel で Visual Basic Editor を開き、[ファイル] メニューの [ファイルのインポート] をクリックして、ExcelBorders.bas を選択します。

Sub ExcelBorders()
    Worksheets(1).Range("A1").Value = "Wow!"
    Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub

Excel ワークシートに戻り、もう一度 [マクロ] ボタンをクリックします。ExcelBorders を選択し、[実行] をクリックします。セル A1 にテキスト "Wow!" が入り、セルの罫線が二重線になります。

図 3. 最初のマクロの実行結果

最初のマクロの実行結果

VBA の例 2: 分岐とループ

2 番目の例の BranchingLooping は、セル A1 に "Fill" という値が入っているかどうかを調べます。値が入っている場合は、後続行の A2 ~ A10 に、その行番号の 2 倍に等しい数値を入れます。A1 に "Fill" という値が入っていない場合は、値を入力するように求めるメッセージ ボックスを表示します。Excel で Visual Basic Editor を開き、[ファイル] メニューの [ファイルのインポート] をクリックして、LoopingBranching.bas を選択します。これについては、後の「分岐とループ」セクションで詳細に説明します。

Sub BranchingLooping()
    If Worksheets(1).Range("A1").Value = "Fill" Then
        Dim row As Integer
        For row = 2 To 10
            Worksheets(1).Range("A" & row).Value = row * 2
        Next row
    Else
        MsgBox ("Put Fill in Cell A1")
    End If
End Sub

VBA の例 3: Outlook の電子メールの作成

次の例の MakeMessage は、本文が HTML の Outlook メール メッセージを作成します。Outlook で Visual Basic Editor を開き、[ファイル] メニューの [ファイルのインポート] をクリックして、MakeMessage.bas を選択します。マクロを実行します。

Sub MakeMessage()
    Dim OutlookMessage As Outlook.MailItem
    Set OutlookMessage = Application.CreateItem(olMailItem)
    OutlookMessage.Subject = "Happy New Year!"
    OutlookMessage.HTMLBody = "<HTML><BODY>Dear <p>Happy New Year! We have had a good year this year…</BODY></HTML>"
    OutlookMessage.Display
    Set OutlookMessage = Nothing
End Sub
> [!NOTE] >

Outlook には、電子メールの作成時に自動化できるさまざまなアプリケーションがあります。たとえば、すべての連絡先に対してループ処理を行って、メッセージの送信先にする連絡先 (たとえば仕事関係の連絡先) を選択し、それらの連絡先だけを対象にしたメッセージを自動的に生成できます。VBA だけでなく、テンプレートも使用できます。

VBA の例 4: Excel の空の行の削除

次の例の DeleteEmptyRows は、Excel で選択範囲の最初の列に空のセルが含まれる行をすべて削除します。Excel で Visual Basic Editor を開き、[ファイル] メニューの [ファイルのインポート] をクリックして、DeleteEmptyRows.bas を選択します。

Sub DeleteEmptyRows()
    SelectedRange = Selection.Rows.Count
    ActiveCell.Select
    For i = 1 To SelectedRange
        If ActiveCell.Value = "" Then
            Selection.EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Next i
End Sub

サブルーチンの最初の行は、SelectedRange という変数を作成し、それをユーザーが選択した行数に設定します。変数を作成するための Dim ステートメントが先頭にないことに注意してください。Visual Basic では、Dim は省略可能です。次に、アクティブ セルとして、元の選択範囲の左上のセルが選択されます。そして、1 からユーザーが選択した行数まで変数 i がループ処理されます。アクティブ セルが空の場合は、選択されている行全体が削除されます。空でない場合は、セルの選択が 1 行下に移動します。

ワークシートで、A 列にデータを入力し、いくつかのセルだけを空のままにします。すべての行を選択し、このマクロを実行します。どの行が削除されたかがわかります。

VBA の例 5: Office アプリケーションどうしのデータのコピー

最後の例である CopyCurrentContact は、Outlook で開いている連絡先からデータを取得し、Word で開いている文書にそのデータを挿入します。Word で Visual Basic Editor を開き、[ファイル] メニューの [ファイルのインポート] をクリックして、DeleteEmptyRows.bas を選択します。Outlook で連絡先を開きます。最後に、空の Word 文書を開いて、マクロを実行します。

Sub CopyCurrentContact()
    Dim OutlookObj As Object
    Dim InspectorObj As Object
    Dim ItemObj As Object
    Set OutlookObj = CreateObject("Outlook.Application")
    Set InspectorObj = OutlookObj.ActiveInspector
    Set ItemObj = InspectorObj.CurrentItem
    Application.ActiveDocument.Range.InsertAfter(ItemObj.FullName & " from " & ItemObj.CompanyName)
End Sub

最初の 3 行は変数を作成します。1 つは Outlook アプリケーション用の変数です。1 つはインスペクター用の変数で、これは Outlook のどのアイテムが開いているかを識別します。もう 1 つは開いている連絡先用の変数です。次の行は、Outlook 変数を初期化します。続く行はインスペクターを設定し、その後ろの行はインスペクターを使用して、開いている連絡先を見つけます。サブルーチンの最後の行は、氏名と会社名を取得し、開いている Word 文書にそれを挿入します。

手順


VBA コードの作成: オブジェクト、プロパティ、およびメソッド

コードの作成は、謎めいていたり難しかったりするのではないかと思われることがありますが、ある程度の常識と論理があれば、それほど難解ではないことがわかります。Office アプリケーションは、命令を受け取ることができる "オブジェクト" と呼ばれるものを公開するような形で作成されています。これは、電話機にボタンがあり、ボタンを使うと電話機を操作できるようになっているのと似ています。ボタンを押すと電話機は命令を認識し、ダイヤルする順序どおりに対応する番号を受け取ります。プログラミングでは、アプリケーションのさまざまなオブジェクトに命令を送ってアプリケーションを操作します。オブジェクトは大いに役に立ちますが、制約もあります。オブジェクトは、それぞれ与えられた役割しか果たすことができず、命令されたことしか実行しません。

プログラミング オブジェクトは階層構造で開発され、そのような階層をアプリケーションのオブジェクト モデルと呼びます。たとえば、Word のトップレベルの Application オブジェクトには、Document オブジェクトが含まれます。Document オブジェクトには、Paragraph オブジェクトなどが含まれます。オブジェクト モデルは、おおむねユーザー インターフェイスに表示されるものを反映しています。アプリケーションとその機能の概念上のマップがオブジェクト モデルです。

オブジェクトには "プロパティ" と "メソッド" があることに注意してください。プロパティはオブジェクトに属する別のオブジェクトで、メソッドはオブジェクトが実行できるアクションです。プロパティまたはメソッドにアクセスするには、オブジェクト名の後ろにピリオドを入力し、その後ろにプロパティ名またはメソッド名を入力します。たとえば、Excel ワークシート内のセルを表すオブジェクトには、セルに格納されている値を返す Value プロパティがあり、セルを選択された状態にする Select メソッドがあります。

サンプルを土台とする

VBA には大規模なコミュニティがあります。通常は、Web を検索すると、求めている機能とよく似た機能を備えたサンプル VBA コードが見つかります。適切なサンプルが見当たらなければ、処理をより小さな単位に分割し、それぞれについて検索を行ってみるか、問題の性質は同じままで、より一般的な解釈に替えて試してみます。サンプルを土台とすることは、開発時間の節約になります。

ただし、十分に考え抜かれて記述された無料のコードが Web で出番を待っているとは思わないでください。実際、見つかるコードにはバグや誤りが含まれることがあります。オンラインで見つかったり、VBA のドキュメントから入手できるサンプルを利用すれば、一歩先に進むことができる、というのがこの方法の発想です。プログラミングの習得には時間と思考力が必要とされます。別のソリューションを使用して問題を解決する前に、VBA がその問題に最適な手段なのかどうかを検討してください。

問題の単純化 ─ 最初に部品を作成する

プログラミングはあっという間に複雑になります。そのため、特に初心者にとっては、問題をできる限り小さい論理単位に分割してから、それぞれのコードを単独で記述し、テストすることが重要です。取り組むコードが多すぎて混乱した場合は、作業を中断し、その問題を保留にします。後でその問題に再び取り組むときに、問題の一部を新しいモジュールとして切り出して、その部分を解決し、コードが機能するようにし、最後にテストして機能の正常性を確認します。その後で、次の部分の記述に進んでください。

バグとデバッグ

プログラミング エラーには、主に 2 つの種類があります。構文エラーは、プログラミング言語の文法規則に反すると発生します。実行時エラーは、構文としては正しく見えても VBA がコードの実行に失敗すると発生します。

修正に手間取ることはあっても、構文エラーを見つけるのは簡単です。入力したコードに構文エラーがあると、Visual Basic Editor が警告音を鳴らし、エラーの部分を強調表示します。実行時エラーを見つけることは、構文エラーの場合よりも困難です。プログラミングの構文は正しく見えますが、VBA がコードを実行しようとする時点で失敗するからです。

もっと大きく複雑なプログラムについては、デバッガーをより慎重に使用する方法を学ぶことをお勧めします。少なくとも、コードを確認する必要がある場所で実行を停止するためにブレークポイントを設定する方法と、コードの実行中にさまざまな変数やプロパティの値を確認できるウォッチを追加する方法、およびコードを 1 行単位でステップ実行する方法は習得してください。これらのオプションはいずれも [デバッグ] メニューから使用できますが、デバッガーを使いこなそうとするなら、各機能に対応するキーボード ショートカットを覚えておくのが一般的です。

リファレンスの活用

Office 2010 ヘルプに組み込まれた開発者用リファレンスを表示するには、いずれかの Office 2010 アプリケーションでリボン上の疑問符をクリックするか F1 キーを押してヘルプ リファレンスを開きます。次に、内容をフィルター処理するために [検索] ボタンの右側にある下向き矢印をクリックします。[開発者用リファレンス] をクリックします。目次が左側パネルに表示されない場合は、小さな本のアイコンをクリックしてパネルを開き、そこからオブジェクト モデルのリファレンスを展開します。

図 4. 開発者用ヘルプをフィルター処理する

開発者ヘルプのフィルター処理

オブジェクト モデルのリファレンスは、時間をかけて閲覧するだけの価値があります。VBA 構文の基礎と使用中の Office 2010 アプリケーションのオブジェクト モデルについて理解できれば、手探りの作業から秩序あるプログラミングへと前進できます。

また、「Office 開発者向け技術情報」は、記事、ヒント、およびコミュニティ情報を得るための便利なポータルです。

フォーラムとグループの検索

すべてのプログラマは、ときどき壁に突き当たります。見つかる限りのリファレンス記事に残らず目を通し、夜を徹してさまざまな問題解決策を考えたとしてもです。さいわい、インターネットでは、互いのプログラミング上の問題に救いの手を差し伸べる開発者のコミュニティが育まれてきました。

Web で "office 開発者 フォーラム" を検索すると、複数のディスカッション グループが見つかります。"office 開発" または問題の説明をキーワードにして検索すると、フォーラム、ブログ投稿、および記事も見つかります。

問題を解決するためにあらゆる手を尽くしたのであれば、遠慮せずに質問を開発者フォーラムに投稿してください。これらのフォーラムは新参のプログラマからの投稿に寛容であり、多くの経験豊かな開発者が喜んで助言してくれます。

以下に、開発者フォーラムに投稿するときに注意すべき若干のエチケットについて説明します。

  • 質問を投稿する前に、サイトに FAQ、またはメンバーが従う必要があるガイドラインがないか探してください。投稿の内容がそれらのガイドラインに沿っていることを確認し、フォーラムの正しいセクションに投稿します。

  • わかりやすく完結したコード サンプルを投稿に含めます。また、それが長いコードの一部である場合は、他のユーザーにもわかるようにコードを編集して明確なものにします。

  • 問題についてわかりやすく簡潔に説明し、解決するために試みた手順を要約して示します。できるだけ時間をかけて投稿を書くように心がけてください。焦っているときや急いでいるときはなおさらです。問題について初めて読む人にも意味が通じるような状況説明を盛り込んでください。

  • 礼儀正しく振舞い、感謝の言葉を書き込むようにします。

より高度なプログラミング

この短い記事では VBA とプログラミングのさわりを紹介したに過ぎませんが、これが出発の足がかりとして役立つことを願っています。以下に、その他の重要なトピックについて簡単に説明します。

変数

アプリケーションで既に作成されたオブジェクトを操作することに加えて、アプリケーションで一時的に使用する目的で、値または他のオブジェクトへの参照を保存するオブジェクトを独自に作成することもできます。これらは、変数と呼ばれます。

VBA で変数を使用するには、Dim ステートメントを使用して、その変数が表すオブジェクトの種類を識別する必要があります。その後で、変数に値を設定してから、その変数を他の変数またはプロパティを設定するために使用します。

次のコード例は、整数 (つまり小数や分数ではない自然数) を格納する i という変数を作成します。

Dim i As Integer

分岐とループ

この記事で使用した簡単なプログラムでは、コードが 1 行ずつ、上から下へ順番に実行されます。プログラミングの真価は、指定した 1 つ以上の条件に基づいて、どのコード行を実行するかを決定するオプションを使用したときに発揮されます。同じ操作を何度も繰り返すことができるときは、これらの機能をさらに拡張できます。If ステートメントは、与えられた条件が真であるかどうかをチェックし、それ以降のすべてのステップを、Else または End If が出現するまで実行します。For ステートメントは、それ自体と Next ステートメントの間にあるすべてのステップを繰り返し、繰り返しのたびに範囲内の変数を増分します。次のコード例は、If ステートメントと For ステートメントを使用して、セル内の値をチェックした後、他のいくつかのセルに値を入力する方法を示しています。また、セル内の値が条件と異なる場合はメッセージ ボックスも表示します。

Sub Macro1()
    If Worksheets(1).Range("A1").Value = "Yes!" Then
        Dim i As Integer
        For i = 2 To 10
            Worksheets(1).Range("A" & i).Value = "OK! " & i
        Next i
    Else
        MsgBox "Put Yes! in cell A1"
    End If
End Sub
ビデオ

ビデオを見る

ビデオを見る (英語)

ビデオの長さ: 09:57 | サイズ: 19.2 MB | 形式: WMV

クリックしてコードを取得

コードを取得する (英語)

関連情報