5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
受講生さんの投稿
(投稿ID: 4749)
一連のカレンダー作成マクロにて少しずつ理解しながらも四苦八苦している日々です。。。
その中での質問なのですが、今回の講座で最後に説明頂いている「Worksheets("Control").Range("A1")」を書き直す部分にて、with構文を利用して後述のマクロを書いてみました。が、正しく挙動せず・・・。
恐らくwith構文内にて自身の指定したいオブジェクトが、別のwith構文によってテレコになっているからなのかと思います。
それを踏まえてなのですが、後述マクロ内with構文①とwith構文②は構文内に構文が含まれる形となっておりますが、なぜこちらは意図する通りそれぞれ正しくオブジェクトが指定されるのでしょうか。
説明下手かつ理解不足で恐縮ですがご教示頂けると幸いです。
受講生さんのコメント
(コメントID: 6628)
小川 慶一さんのコメント
(コメントID: 6630)
では、何が省略されているのか?というと。
その言葉が出てくる【直前】で出てきた With 句の With 以降で示されたオブジェクトの指定でした。
ということで。
以下、説明に必要な箇所だけ抜き出し、さらにそのマクロを改変してから、解説します。
Do ... Loop は今回の話に無関係なのではずします。
↓
話を簡単にするため、2つ目のWithの中を書き換えておきます。
(一般に、長い言葉は短い言葉に置き換えたほうが構造がわかりやすい)
↓
話を簡単にするため、3つ目のWithの中も書き換えておきましょう。
↓
ということで、事前準備終わり。
以下、事例を使っての解説です。
ここで、たとえば [1-1] について、受講生さんは以下のように解釈されることを期待していたのではないかと思いますが..。
残念ながら、以下のように解釈されます。(右辺が、 rg2 ではなく、 rg3 )
理由は、冒頭に述べたとおり。 ドット「 . 」ではじまる言葉は、その言葉が出てくる【直前】で出てきた With 句で指定されたオプジェクトを指しているからです。
ということで、どうでしょうか。
たぶんこれで伝わるかな、と思うのですが...。
受講生さんのコメント
(コメントID: 6631)
返信ありがとうございます。
with構文内にて新たなwith句が出てきた場合、指定されるオブジェクトは上書きされてしまうんですね。
大変わかりやすい説明ありがとうございました。
> ドット「 . 」ではじまる言葉は、「 . 」より手前に来るべき言葉が省略されています。
>
> では、何が省略されているのか?というと。
> その言葉が出てくる【直前】で出てきた With 句の With 以降で示されたオブジェクトの指定でした。
>
> ということで。
> 以下、説明に必要な箇所だけ抜き出し、さらにそのマクロを改変してから、解説します。
>
>
>
> Do ... Loop は今回の話に無関係なのではずします。
> ↓
>
>
>
> 話を簡単にするため、2つ目のWithの中を書き換えておきます。
> (一般に、長い言葉は短い言葉に置き換えたほうが構造がわかりやすい)
> ↓
>
>
> 話を簡単にするため、3つ目のWithの中も書き換えておきましょう。
> ↓
>
>
> ということで、事前準備終わり。
> 以下、事例を使っての解説です。
>
> ここで、たとえば [1-1] について、受講生さんは以下のように解釈されることを期待していたのではないかと思いますが..。
>
>
>
> 残念ながら、以下のように解釈されます。(右辺が、 rg2 ではなく、 rg3 )
> 理由は、冒頭に述べたとおり。 ドット「 . 」ではじまる言葉は、その言葉が出てくる【直前】で出てきた With 句で指定されたオプジェクトを指しているからです。
>
>
>
> ということで、どうでしょうか。
> たぶんこれで伝わるかな、と思うのですが...。
>
小川 慶一さんのコメント
(コメントID: 6632)
理解につながったようで良かったです。
> with構文内にて新たなwith句が出てきた場合、指定されるオブジェクトは上書きされてしまうんですね。
ルールはそれしかないので、シンプルですね。
ひきつづき、お楽しみください☆