Looking for excel-vba Answers? Try Ask4KnowledgeBase
Looking for excel-vba Keywords? Try Ask4Keywords

excel-vbaexcel-vbaを使い始める


備考

Microsoft Excelには、VBAという包括的なマクロプログラミング言語が含まれています。このプログラミング言語は、少なくとも3つの追加リソースを提供します。

  1. マクロを使用してコードからExcelを自動的に駆動します。ほとんどの場合、ユーザーインターフェイスからExcelを操作してユーザーが実行できる操作は、Excel VBAでコードを記述することによって実行できます。
  2. 新しいカスタムワークシート関数を作成します。
  3. 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

新しいオブジェクトライブラリリファレンスの追加

この手順では、オブジェクトライブラリ参照を追加する方法と、後で新しいライブラリクラスオブジェクトを参照して新しい変数を宣言する方法について説明します。

以下の例は、既存のVBプロジェクトにPowerPointライブラリを追加する方法を示しています。ご覧のとおり、現在PowerPoint Object Libraryは利用できません。

ここに画像の説明を入力

ステップ1 :メニューツール - > 参照を選択... ここに画像の説明を入力

ステップ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
 

変数の宣言

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

プライベート変数は、同じモジュール内のプロシージャでのみ使用できます。

ソースと詳細:

MSDN-宣言変数

タイプ文字(Visual Basic)

Excelオブジェクトモデル入門

この例は、初心者のための Excelオブジェクトモデル穏やかに紹介する予定です


  1. Visual Basic Editor(VBE)を開きます。
  2. [表示] - [イミディエイトウィンドウ]をクリックしてイミディエイトウィンドウ(またはctrl + G )を開きます。

ここに画像の説明を入力

  1. VBEの下部に次のイミディエイトウィンドウが表示されます。

ここに画像の説明を入力

このウィンドウでは、いくつかのVBAコードを直接テストすることができます。それでは、このコンソールに次のように入力してみましょう。

?Worksheets. 
 

VBEはインテリセンスを持っており、次の図のようにツールチップを開く必要があります。

ここに画像の説明を入力

リストから.Countを選択するか、直接.Cout.Cout して取得します。

?Worksheets.Count
 
  1. Enterキーを押します。式が評価され、1が返されます。これは、ワークブックに現在存在するワークシートの数を示します。疑問符( ? )は、Debug.Printのエイリアスです。

ワークシートはオブジェクトであり、カウントはメソッドです。 Excelには複数のオブジェクト( WorkbookWorksheetRangeChart ..)があり、それぞれには特定のメソッドとプロパティが含まれています。 ExcelのVBAリファレンスには、オブジェクトの完全なリストがあります 。ワークシートオブジェクトがここに表示されます

このExcel VBAリファレンスは、Excelオブジェクトモデルに関する主要な情報源になるはずです。

  1. 今度は(せずに、別の表現、種類を試してみましょう? 文字):
Worksheets.Add().Name = "StackOveflow"
 
  1. 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

こんにちは世界

  1. Visual Basic Editorを開きます(Visual Basic Editorを開くを参照してください)
  2. [挿入] - > [モジュール]をクリックして、新しいモジュールを追加します。

ここに画像の説明を入力

  1. 次のコードを新しいモジュールにコピーして貼り付けます。
  Sub hello()
    MsgBox "Hello World !"
  End Sub
 

取得するには:

ここに画像の説明を入力

  1. Visual Basicツールバーの緑色の「再生」矢印(またはF5キー)をクリックして、プログラムを実行します。 ここに画像の説明を入力

  2. 新規に作成した「hello」サブを選択し、「 Run 」をクリックしRunここに画像の説明を入力

  3. 完了すると、次のウィンドウが表示されます。

ここに画像の説明を入力

Visual Basic Editor(VBE)を開く


ステップ1:ワークブックを開く

ここに画像の説明を入力


ステップ2オプションA: Alt + F11を押します。

これは、VBEを開くための標準的なショートカットです。

ステップ2オプションB:開発者タブ - >コードを表示

まず、開発者タブをリボンに追加する必要があります。 「ファイル」 - >「オプション」 - >「リボンのカスタマイズ」に進み、開発者のチェックボックスをオンにします。

ここに画像の説明を入力

次に、開発者タブに移動し、[コードの表示]または[Visual Basic]をクリックします。

ここに画像の説明を入力

ステップ2オプションC:[表示]タブ> [マクロ]> [編集]ボタンをクリックして、既存のマクロを開きます

これら3つのオプションはすべて、Visual Basic Editor(VBE)を開きます。

ここに画像の説明を入力