5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
タカキさんの投稿
(投稿ID: 4715)
講義の課題から下記のサブプロシージャを作りました。
Sub MANSIONRENSHUU()
Dim KU
KU = InStr(Range("C2"), "区")
Range("F2").Value = Left(Range("C2"), KU)
Range("G2").Value = Mid(Range("C2"), KU + 1, 100)
End Sub
動画では
Range("F2").Value = Left(Range("C2").value, KU)
Range("G2").Value = Mid(Range("C2").value, KU + 1, 100)
というふにleft関数、mid 関数に .value が入りますが、私の回答は間違っているでしょうか?
ご確認よろしくお願いいたします。
小川 慶一さんのコメント
(コメントID: 6568)
こんばんは。
> というふにleft関数、mid 関数に .value が入りますが、私の回答は間違っているでしょうか?
結果的に同じ状態が得られます。そういう意味では間違いとは言えません。
とはいえ、普段からセルに値を設定するときには .Value をつけるよう心がけられることを強く推奨します。
Range("C2") と Range("C2").Value では言葉が指しているものが違います。
Range("C2") = ... という書き方で結果的に値が変更されるのは、その違いをVBがある程度吸収してくれるからです。
ですが、「どうせ結果的に同じ」と思ってこれに頼っていると、以下の問題が生じます。
[1] 「言葉が指すもの」の違いに敏感になれないので、上達が阻まれる
[2] 特に、[1]の延長として、「オブジェクト型変数」の学習でつまづきやすくなる
以下の記事も参考にしてください。
https://www.exvba.com/2183/
> いつもお世話になりありがとうございます。
>
> 講義の課題から下記のサブプロシージャを作りました。
>
> Sub MANSIONRENSHUU()
> Dim KU
> KU = InStr(Range("C2"), "区")
>
> Range("F2").Value = Left(Range("C2"), KU)
> Range("G2").Value = Mid(Range("C2"), KU + 1, 100)
>
>
> End Sub
> 動画では
> Range("F2").Value = Left(Range("C2").value, KU)
> Range("G2").Value = Mid(Range("C2").value, KU + 1, 100)
>
> というふにleft関数、mid 関数に .value が入りますが、私の回答は間違っているでしょうか?
>
> ご確認よろしくお願いいたします。