誰もが知っておくべきExcelVBAの便利な範囲オブジェクトのプロパティ

誰もが知っておくべきExcelVBAの便利な範囲オブジェクトのプロパティ

Rangeオブジェクトには、数十のプロパティがあります。今後12か月間ノンストップでVBAプログラムを作成でき、すべてを使用することはできません。ここでは、最も一般的に使用されるExcel VBARangeプロパティのいくつかの概要を説明します。詳細については、VBEのヘルプシステムを参照してください。(Excel VBAのヘルプについては、これらの追加リソースを確認してください。)

一部のExcelVBA Rangeプロパティは読み取り専用プロパティです。つまり、コードはそれらの値を確認できますが、変更することはできません(「見てください。触れないでください」)。たとえば、すべてのExcel VBA Rangeオブジェクトには、範囲のアドレスを保持するAddressプロパティがあります。この読み取り専用プロパティにアクセスすることはできますが、変更することはできません。これは、考えてみると完全に理にかなっています。

ちなみに、以下の例は通常、完全な手順ではなくステートメントです。これらのいずれかを試したい場合(そしてそうすべきである場合)、それを行うためのSubプロシージャを作成します。また、これらのVBAステートメントの多くは、ワークシートがアクティブシートである場合にのみ正しく機能します。

Excel VBA:Valueプロパティ

Valueプロパティは、セルに含まれる値を表します。これは読み取り/書き込みプロパティであるため、VBAコードは値の読み取りまたは変更を行うことができます。

次のステートメントは、Sheet1のセルA1の値を示すメッセージボックスを表示します。

MsgBox Worksheets( "Sheet1")。Range( "A1")。Value

単一セルのRangeオブジェクトに対してのみValueプロパティを読み取ることができるのは当然のことです。たとえば、次のステートメントはエラーを生成します。

MsgBox Worksheets( "Sheet1")。Range( "A1:C3")。Value

ただし、任意のサイズの範囲のValueプロパティを変更できます。次のステートメントは、範囲内の各セルに数値123を入力します。

Worksheets( "Sheet1")。Range( "A1:C3")。Value = 123

値は、Excel VBARangeオブジェクトのデフォルトのプロパティです。つまり、Rangeのプロパティを省略すると、ExcelはそのValueプロパティを使用します。次のステートメントは両方とも、アクティブなワークシートのセルA1に75の値を入力します。

Range( "A1")。Value = 75
Range( "A1")= 75

Excel VBA:Textプロパティ

Textプロパティは、セルに表示されているテキストを表す文字列(フォーマットされた値)を返します。Textプロパティは読み取り専用です。セルA1に値12.3が含まれ、小数点以下2桁とドル記号($ 12.30)を表示するようにフォーマットされているとします。次のステートメントは、$ 12.30を含むメッセージボックスを表示します。

MsgBox Worksheets( "Sheet1")。Range( "A1")。Text

ただし、次のステートメントには、12.3を含むメッセージボックスが表示されます。

MsgBox Worksheets( "Sheet1")。Range( "A1")。Value

セルに数式が含まれている場合、Textプロパティは数式の結果を返します。セルにテキストが含まれている場合、テキスト(数値とは異なり)を異なる方法で表示するようにフォーマットすることはできないため、TextプロパティとValueプロパティは常に同じものを返します。

Excel VBA:Countプロパティ

Countプロパティは、範囲内のセルの数を返します。空白でないセルだけでなく、すべてのセルをカウントします。予想どおり、Countは読み取り専用のプロパティです。次のステートメントは、範囲のCountプロパティにアクセスし、結果(9)をメッセージボックスに表示します。

MsgBox Range( "A1:C3")。Count

Excel VBA:列と行のプロパティ

Columnプロパティは、単一セル範囲の列番号を返します。そのサイドキックであるRowプロパティは、単一セル範囲の行番号を返します。どちらも読み取り専用のプロパティです。たとえば、セルF3が6番目の列にあるため、次のステートメントは6を表示します。

MsgBox Sheets( "Sheet1")。Range( "F3")。Column

セルF3が3行目にあるため、次の式は3を表示します。

MsgBox Sheets( "Sheet1")。Range( "F3")。Row

Excel VBA Rangeオブジェクトが複数のセルで構成されている場合、Columnプロパティは範囲の最初の列の列番号を返し、Rowプロパティは範囲の最初の行の行番号を返します。

列と行のプロパティを列と行のプロパティと混同しないでください。列プロパティと行プロパティは単一の値を返します。一方、ColumnsプロパティとRowsプロパティは、Rangeオブジェクトを返します。「s」がもたらす違い。

Excel VBA:アドレスプロパティ

読み取り専用プロパティであるAddressは、Rangeオブジェクトのセルアドレスを絶対参照(列文字の前と行番号の前のドル記号)として表示します。次のステートメントは、以下に示すメッセージボックスを表示します。

MsgBox Range(Cells(1、1)、Cells(5、5))。Address

誰もが知っておくべきExcelVBAの便利な範囲オブジェクトのプロパティ

このメッセージボックスには、5行5列の範囲のAddressプロパティが表示されます。

Excel VBA:HasFormulaプロパティ

単一セル範囲に数式が含まれている場合、HasFormulaプロパティ(読み取り専用)はTrueを返します。セルに数式以外のものが含まれている(または空である)場合は、Falseを返します。範囲が複数のセルで構成されている場合、VBAは、範囲内のすべてのセルに数式が含まれている場合にのみTrueを返し、範囲内のすべてのセルに数式が含まれていない場合はFalseを返します。範囲に数式と非数式が混在している場合、プロパティはNullを返します。ヌルは一種の無人地帯です。答えは真でも偽でもありません。範囲内のセルには数式がある場合とない場合があります。

Nullを返す可能性のあるプロパティを操作する場合は注意が必要です。より具体的には、Nullを処理できる唯一のデータ型はVariantです。

たとえば、セルA1に値が含まれ、セルA2に数式が含まれているとします。範囲がすべての数式またはすべての非数式で構成されていないため、次のステートメントはエラーを生成します。

Dim FormulaTest As Boolean
FormulaTest = Range( "A1:A2")。HasFormula

ブールデータ型は、TrueまたはFalseのみを処理できます。Nullを指定すると、Excelは文句を言い、エラーメッセージを表示します。このタイプの状況を修正するには、FormulaTest変数がブール値ではなくバリアントとして宣言されていることを確認するのが最善の方法です。次の例では、VBAの便利なTypeName関数(およびIf-Then-Else構文)を使用して、FormulaTest変数のデータ型を決定します。範囲に数式と非数式が混在している場合、メッセージボックスに「混合」と表示されますそれ以外の場合は、TrueまたはFalseが表示されます。

サブCheckForFormulas()
  バリアントとしてのDimFormulaTest
  FormulaTest = Range( "A1:A2")。HasFormula
  TypeName(FormulaTest)= "Null"の場合、
    MsgBox「混合!」
  そうしないと
    MsgBox FormulaTest
  終了する場合
エンドサブ

Excel VBA: The Font property

A property can return an object. The Font property of an Excel VBA Range object is another example of that concept at work. The Font property returns a Font object.

A Font object, as you may expect, has many accessible properties. To change some aspect of a range’s font, you must first access the range’s Font object and then manipulate the properties of that object. This may be confusing, but perhaps this example will help.

The following statement uses the Font property of the Range object to return a Font object. Then the Bold property of the Font object is set to True. In plain English, this statement makes the cell display in boldface:

Range("A1").Font.Bold = True

真実は、Excel VBARangeオブジェクトに含まれている特別なFontオブジェクトを操作していることを実際に知る必要はないということです。適切な構文を使用している限り、問題なく機能します。多くの場合、マクロレコーダーを使用してアクションを記録すると、適切な構文について知っておく必要のあるすべてのことがわかります。

Excel VBA:内部プロパティ

オブジェクトを返すプロパティのさらに別の例を次に示します。RangeオブジェクトのInteriorプロパティは、Interiorオブジェクトを返します(奇妙な名前ですが、それはそれが呼ばれているものです)。このタイプのオブジェクト参照は、Fontプロパティと同じように機能します。

たとえば、次のステートメントは、Rangeオブジェクトに含まれるInteriorオブジェクトのColorプロパティを変更します。

Range( "A1")。Interior.Color = 8421504

つまり、このステートメントはセルの背景を中間の灰色に変更します。あれは何でしょう?8421504がミドルグレーであることを知らなかったのですか?Excelのすばらしい色の世界についての洞察については、近くのサイドバー「手っ取り早いカラー入門書」を参照してください。

Excel VBA:Formulaプロパティ

Formulaプロパティは、セル内の数式を表します。これは読み取り/書き込みプロパティであるため、セル内の数式を表示したり、セルに数式を挿入したりするためにアクセスできます。たとえば、次のステートメントは、セルA13にSUM数式を入力します。

Range( "A13")。Formula = "= SUM(A1:A12)"

数式はテキスト文字列であり、引用符で囲まれていることに注意してください。また、すべての数式と同様に、数式は等号で始まることに注意してください。

数式自体に引用符が含まれている場合は、少し注意が必要です。VBAを使用してこの数式を挿入するとします。

= SUM(A1:A12)& "ストア"

この数式は、値の後にStoresという単語が続くことを示しています。この数式を受け入れられるようにするには、数式内のすべての引用符を2つの引用符に置き換える必要があります。そうしないと、VBAが混乱し、構文エラーがあると主張します(あるためです!)。したがって、引用符を含む数式を入力するステートメントは次のとおりです。

Range( "A13")。Formula = "= SUM(A1:A12)&" "ストア" ""

ちなみに、セルに数式がなくても、セルの数式プロパティにアクセスできます。セルに数式がない場合、FormulaプロパティはそのValueプロパティと同じものを返します。

セルに数式があるかどうかを知る必要がある場合は、HasFormulaプロパティを使用します。

VBAは米国英語を「話す」ことに注意してください。つまり、数式をセルに入れるには、US構文を使用する必要があります。英語以外のバージョンのExcelを使用している場合は、ヘルプシステムのFormulaLocalプロパティを確認してください。

Excel VBA:NumberFormatプロパティ

NumberFormatプロパティは、Rangeオブジェクトの数値形式(テキスト文字列として表される)を表します。これは読み取り/書き込みプロパティであるため、VBAコードは数値形式を調べるか変更することができます。次のステートメントは、列Aの数値形式を小数点以下2桁のパーセンテージに変更します。

Columns( "A:A")。NumberFormat = "0.00%"

次の手順に従って、他の数値形式のリストを表示します(さらに良いことに、これを実行している間はマクロレコーダーをオンにします)。

ワークシートをアクティブにします。

Ctrl + 1を押して、[セルの書式設定]ダイアログボックスにアクセスします。

[番号]タブをクリックします。

カスタムカテゴリを選択して、いくつかの追加の数値形式の文字列を表示および適用します。


スマートシート 9.1.1

スマートシート 9.1.1

Smartsheet は、プロジェクトの管理、ワークフローの構築、チームとの共同作業を可能にする動的な作業プラットフォームです。

共有ポイント

共有ポイント

SharePoint は、さまざまなワークフロー アプリケーション、「リスト」データベース、その他の Web コンポーネント、およびビジネス グループの共同作業を制御するためのセキュリティ機能を使用する Web ベースのコラボレーション システムです。

パーペチュアルカレンダー 1.0.38/1.0.36

パーペチュアルカレンダー 1.0.38/1.0.36

Van Nien Calendar は、携帯電話でカレンダーを表示するアプリケーションです。携帯電話で太陰太陽の日付をすぐに確認できるため、重要な仕事を計画することができます。

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook は、Microsoft Corporation によって開発されたビジネスおよび生産性アプリケーションです。

クリックアップ

クリックアップ

ClickUp は、あらゆるビジネスにとって最も評価の高い生産性プラットフォームの 1 つです。Google、Booking.com、サンディエゴ・パドレス、Uber などの大企業はすべて、職場の生産性を向上させるために ClickUp を使用しています。

PDF-XChange ビューア 2.5.322.10

PDF-XChange ビューア 2.5.322.10

PDF は、テキスト ドキュメントの読み取り、作成、送信に一般的に使用される形式になっています。その結果、この種のドキュメントに使用されるプログラムの数も増加しました。PDF-XChange Viewer は、ますます多くの PDF ビューアの 1 つです。

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice は、特に Excel、PowerPoint、Word など、Microsoft 365 に匹敵する Office アプリケーションの完全なスイートを提供します。プロジェクトをより効率的に管理できるようになり、いくつかのファイル形式がサポートされます。

iTaxviewer 1.8.7をダウンロード

iTaxviewer 1.8.7をダウンロード

iTaxViewer ソフトウェアは、現在最も人気のある XML ファイル読み取りソフトウェアです。このソフトウェアは、国税総局のXML形式の電子申告書を閲覧するためのアプリケーションです。

Nitro PDF リーダー

Nitro PDF リーダー

Nitro PDF Reader は、ほとんどの人が PDF ドキュメントを使用して毎日実行する基本的なタスクをすべてカバーする便利な PDF エディターです。

Foxit リーダー 12

Foxit リーダー 12

Foxit Reader は主に PDF リーダーですが、PDF ファイルの作成、署名、編集、注釈の追加も可能です。オペレーティング システム上で動作し、Microsoft Office パッケージのさまざまなプログラム用のプラグインがあります。