検索

キーワード


目次

【Excel VBA】同一のオブジェクトを省略して記載する方法

  • 公開日:2023-06-26 13:21:07
  • 最終更新日:2023-06-26 09:03:11

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

皆さんこんにちは、エンジニアのIMMRです。


例えば、下記のような資料があります。


図1 ブック53

図1 ブック53


この資料を見やすくするために罫線の追加や、文字の色などを変えて加工してみたいと思います。


下記、図のように

・文字を赤く

・背景を水色

・文字を赤く

・罫線を追加

していきたいと思います。


図2 ブック53(サンプル)

図2 ブック53(サンプル)


上記の作業をする場合のサンプルプログラムです。

サンプルプログラム1

Sub test01()

    Range("A4:D14").Borders.LineStyle = xlContinuous
    Range("A4:D14").Interior.ColorIndex = 20
    Range("A4:D14").Font.ColorIndex = 3
    Range("A4:D14").Font.Bold = True

End Sub


Range("A4:D14")に罫線を追加する。

Range("A4:D14")の背景を水色にする。

Range("A4:D14")の文字の色を赤にする。

Range("A4:D14")の文字を太文字にする。

といった感じです。

ですが、何度も同じような記載をするのは手間がかかりますよね。

これから説明するWithステートメントを使用することで

省略して記載が出来、プログラム自体も読みやすくすることが出来ます。


1.Withステートメントについて

VBAの命令文では、対象となるオブジェクト(処理の対象となる範囲)の指定が必要になります。

そのオブジェクトは処理を行うために宣言しないといけないのですが

同じオブジェクトの場合、Withステートメントを記載することで省略することができます。


Withステートメントの後ろに記載するとそれ以降End Withまでは同じステートメントとみなすことが出来ます。

その際にピリオドを付けます。

これにより、ピリオドの前は同じオブジェクトであることを示すことができます。


2.Withステートメント記載方法について

記載方法は、

With + オブジェクト(範囲) と End With で囲みます。

そして、その中に処理(例えば、文字を赤くする等)を記載する場合、

本来でしたらオブジェクト + 処理 で宣言するのですが

オブジェクト部分を省略して、ピリオドだけにすることが可能です。


記載方法

With オブジェクト(範囲)

    .処理①の内容
    .処理②の内容
    .処理③の内容
    .処理④の内容

End With


3.Withステートメント記載方法(サンプルプログラム)①

上記で説明したSub test01()のプログラムをWithステートメントを使って記載すると

下記のようになります。


サンプルプログラム2

Sub test02()

    With Range("A4:D14")
        .Borders.LineStyle = xlContinuous
        .Interior.ColorIndex = 20
        .Font.ColorIndex = 3
        .Font.Bold = True
    End With

End Sub


オブジェクト部分が省略されて、すっきりします。そして、読みやすくなります。


4.Withステートメント記載方法サンプルプログラム②

もう一つの記載方法について説明します。

それは、以前に説明した

 オブジェクトを「Set」ステートメントで変数に格納する方法    と合わせて作成することです。

作成は下記のようになります。


サンプルプログラム3

Sub test03()

    Dim Ra As Range

    Set Ra = Range("A4:D14")

    With Ra
        .Borders.LineStyle = xlContinuous
        .Interior.ColorIndex = 20
        .Font.ColorIndex = 3
        .Font.Bold = True
    End With

End Sub


このようにオブジェクト型の変数を用いて記載することも可能です。


5.Withステートメント記載方法サンプルプログラム①の実行

上であげたサンプルプログラム2サンプルプログラム3の処理結果は同じなので、

サンプルプログラム2だけを実行します。


使用するのは、図1 ブック53です。

実行すると下記、図3になります。


図3 ブック53(サンプルプログラム2実行結果)

図3 ブック53(サンプルプログラム2実行結果)


図2 ブック53(サンプル)と同じ結果を得ることができました。

そのため、Withステートメントを使用して、サンプルプログラム1と同じ動作をすることが出来ました。


同一のオブジェクトを省略して安易に記載することができました。


【著者】

Imamura

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事