excel-vba チュートリアル
excel-vbaを使い始める
サーチ…
備考
Microsoft Excelには、VBAという包括的なマクロプログラミング言語が含まれています。このプログラミング言語は、少なくとも3つの追加リソースを提供します。
- マクロを使用してコードからExcelを自動的に駆動します。ほとんどの場合、ユーザーインターフェイスからExcelを操作してユーザーが実行できる操作は、Excel VBAでコードを記述することによって実行できます。
- 新しいカスタムワークシート関数を作成します。
- Microsoft Word、PowerPoint、Internet Explorer、メモ帳などの他のアプリケーションとのインタラクトExcel
VBAはVisual Basic for Applicationsの略です。これは、1990年代半ば以降、Microsoft Excelのマクロをサポートする、尊敬できるVisual Basicプログラミング言語のカスタムバージョンです。
重要
excel-vbaタグ内に作成された例やトピックは、Microsoft ExcelでのVBAの使用に固有で関連していることを確認してください。努力の重複を避けるために、VBA言語の一般的な提案されたトピックや例はすべて拒否されるべきです。
トピックに関する例:
✓ ワークシート・オブジェクトの作成と相互作用
✓WorksheetFunction
クラスとそれぞれの方法
xlDirection
列挙を使用して範囲をナビゲートする
トピック外の例:
'' for each 'ループを作成する方法
✗MsgBox
クラスとどのようにメッセージを表示するには
VVBAでのWinAPIの使用
バージョン
VB
バージョン | 発売日 |
---|---|
VB6 | 1998-10-01 |
VB7 | 2001年6月6日 |
WIN32 | 1998-10-01 |
WIN64 | 2001年6月6日 |
マック | 1998-10-01 |
Excel
バージョン | 発売日 |
---|---|
16 | 2016-01-01 |
15 | 2013-01-01 |
14 | 2010-01-01 |
12 | 2007-01-01 |
11 | 2003-01-01 |
10 | 2001-01-01 |
9 | 1999-01-01 |
8 | 1997-01-01 |
7 | 1995-01-01 |
5 | 1993-01-01 |
2 | 1987-01-01 |
変数の宣言
VBAで明示的に変数を宣言するには、 Dim
ステートメントを使用し、その後に変数名と型を指定します。変数が宣言されずに使用される場合、または型が指定されていない場合はVariant
型が割り当てられます。
モジュールの最初の行でOption Explicit
ステートメントを使用すると、使用前にすべての変数を強制的に宣言できます(「常にOption Explicit」を参照)。
Option Explicit
を使用すると、誤植を防ぐことができ、変数/オブジェクトが意図されたタイプのままになるため、常にOption Explicit
を使用することを強くお勧めします。
Option Explicit
Sub Example()
Dim a As Integer
a = 2
Debug.Print a
'Outputs: 2
Dim b As Long
b = a + 2
Debug.Print b
'Outputs: 4
Dim c As String
c = "Hello, world!"
Debug.Print c
'Outputs: Hello, world!
End Sub
区切り文字としてカンマを使用して複数の変数を1行に宣言できますが、 それぞれの型を個別に宣言するか、デフォルトでVariant
型にする必要があります 。
Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str) 'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng) 'Output: Long
データ型文字の接尾辞($%&!#@)を使用して変数を宣言することもできますが、これを使用することはますます避けられます。
Dim this$ 'String
Dim this% 'Integer
Dim this& 'Long
Dim this! 'Single
Dim this# 'Double
Dim this@ 'Currency
変数を宣言するその他の方法は次のとおりです。
-
Static
なもの:Static CounterVariable as Integer
Dimステートメントの代わりにStaticステートメントを使用すると、宣言された変数は呼び出し間でその値を保持します。
-
Public
ように:Public CounterVariable as Integer
パブリック変数は、プロジェクト内の任意のプロシージャで使用できます。パブリック変数が標準モジュールまたはクラスモジュールで宣言されている場合は、パブリック変数が宣言されているプロジェクトを参照するすべてのプロジェクトで使用することもできます。
-
Private
ような:Private CounterVariable as Integer
プライベート変数は、同じモジュール内のプロシージャでのみ使用できます。
ソースと詳細:
Visual Basic Editor(VBE)を開く
ステップ1:ワークブックを開く
ステップ2オプションA: Alt + F11を押します。
これは、VBEを開くための標準的なショートカットです。
ステップ2オプションB:開発者タブ - >コードを表示
まず、開発者タブをリボンに追加する必要があります。 「ファイル」 - >「オプション」 - >「リボンのカスタマイズ」に進み、開発者のチェックボックスをオンにします。
次に、開発者タブに移動し、[コードの表示]または[Visual Basic]をクリックします。
ステップ2オプションC:[表示]タブ> [マクロ]> [編集]ボタンをクリックして、既存のマクロを開きます
これら3つのオプションはすべて、Visual Basic Editor(VBE)を開きます。
新しいオブジェクトライブラリリファレンスの追加
この手順では、オブジェクトライブラリ参照を追加する方法と、後で新しいライブラリクラスオブジェクトを参照して新しい変数を宣言する方法について説明します。
以下の例は、既存のVBプロジェクトにPowerPointライブラリを追加する方法を示しています。ご覧のとおり、現在PowerPoint Object Libraryは利用できません。
ステップ2 :追加する参照を選択します。この例では、「 Microsoft PowerPoint 14.0 Object Library 」を探して「 OK 」を押します。
注:PowerPoint 14.0は、Office 2010のバージョンがPCにインストールされていることを意味します。
ステップ3 :VBエディタでCtrl + Spaceを押すと、PowerPointのオートコンプリートオプションが表示されます。
PowerPoint
を選択してを押す.
PowerPoint Object Libraryに関連するすべてのオブジェクトオプションを含む別のメニューが表示されます。この例は、PowerPointのオブジェクトApplication
を選択する方法を示しています。
ステップ4 :これで、ユーザーはPowerPointオブジェクトライブラリを使用してさらに多くの変数を宣言できます。
PowerPointオブジェクトライブラリのPresentation
オブジェクトを参照している変数を宣言します。
PowerPointオブジェクトライブラリのSlide
オブジェクトを参照している別の変数を宣言します。
変数宣言セクションは以下のスクリーンショットのようになり、ユーザーはコード内でこれらの変数を使用することができます。
このチュートリアルのコードバージョン:
Option Explicit
Sub Export_toPPT()
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
' here write down everything you want to do with the PowerPoint Class and objects
End Sub
こんにちは世界
- Visual Basic Editorを開きます(Visual Basic Editorを開くを参照してください)
- [挿入] - > [モジュール]をクリックして、新しいモジュールを追加します。
- 次のコードを新しいモジュールにコピーして貼り付けます。
Sub hello()
MsgBox "Hello World !"
End Sub
取得するには:
完了すると、次のウィンドウが表示されます。
Excelオブジェクトモデル入門
この例は、初心者のための Excelオブジェクトモデルを穏やかに紹介する予定です 。
- Visual Basic Editor(VBE)を開きます。
- [表示] - [イミディエイトウィンドウ]をクリックしてイミディエイトウィンドウ(またはctrl + G )を開きます。
- VBEの下部に次のイミディエイトウィンドウが表示されます。
このウィンドウでは、いくつかのVBAコードを直接テストすることができます。それでは、このコンソールに次のように入力してみましょう。
?Worksheets.
VBEはインテリセンスを持っており、次の図のようにツールチップを開く必要があります。
リストから.Countを選択するか、直接.Cout
を.Cout
して取得します。
?Worksheets.Count
- Enterキーを押します。式が評価され、1が返されます。これは、ワークブックに現在存在するワークシートの数を示します。疑問符(
?
)は、Debug.Printのエイリアスです。
ワークシートはオブジェクトであり、カウントはメソッドです。 Excelには複数のオブジェクト( Workbook
、 Worksheet
、 Range
、 Chart
..)があり、それぞれには特定のメソッドとプロパティが含まれています。 ExcelのVBAリファレンスには、オブジェクトの完全なリストがあります 。ワークシートオブジェクトがここに表示されます 。
このExcel VBAリファレンスは、Excelオブジェクトモデルに関する主要な情報源になるはずです。
- 今度は(せずに、別の表現、種類を試してみましょう
?
文字):
Worksheets.Add().Name = "StackOveflow"
- Enterを押します。これにより、
StackOverflow.
という新しいワークシートが作成されますStackOverflow.
:
この式を理解するには、前述のExcelリファレンスのAdd関数を読み込む必要があります。あなたは次を見つけるでしょう:
Add: Creates a new worksheet, chart, or macro sheet.
The new worksheet becomes the active sheet.
Return Value: An Object value that represents the new worksheet, chart,
or macro sheet.
したがって、 Worksheets.Add()
は新しいワークシートを作成して返します。 (Sなし )ワークシートオブジェクト自体で見つけることができるドキュメントにし、 Name
そのプロパティの1(参照ですこちら )。これは次のように定義されます。
Worksheet.Name Property: Returns or sets a String value that
represents the object name.
したがって、異なるオブジェクト定義を調べることによって、このコードを理解することができますWorksheets.Add().Name = "StackOveflow"
Add()
は新しいワークシートを作成して追加し、そのワークシートに参照を返し、Name プロパティを "StackOverflow"に設定します
さて、Excelにはいくつかのオブジェクトが含まれています。これらのオブジェクトは、同じクラスの1つまたは複数のExcelオブジェクトのコレクションで構成されています。 Worksheet
オブジェクトのコレクションであるWorkSheets
の場合です。各オブジェクトには、プログラマが対話できるいくつかのプロパティとメソッドがあります。
Excelオブジェクトモデルは、Excel オブジェクト階層を参照します。
すべてのオブジェクトの上部にApplication
オブジェクトがあり、Excelインスタンス自体を表します。メソッドを呼び出すか、プロパティを設定/取得できるようにするためには、オブジェクトへの参照が常に必要となるため、VBAでのプログラミングではこの階層をよく理解する必要があります。
(非常に単純化された)Excelオブジェクトモデルは、
Application
Workbooks
Workbook
Worksheets
Worksheet
Range
Excel 2007のように、ワークシートオブジェクトの詳細なバージョンを以下に示します。
完全なExcelオブジェクトモデルはここにあります 。
最後に、Excelオブジェクトモデルの一部であるevents
(例: Workbook.WindowActivate
)があるオブジェクトもありevents
。