Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7585 / 76732 ←次へ | 前へ→

【74733】Re:セルの書き換え手法2点の違いを教えてください。
発言  ichinose@食事中  - 13/9/4(水) 12:58 -

引用なし
パスワード
   こんにちは。

>変数myV の型を Variant で行くか、Rangeで行くかでも
>挙動が変わってきますね

展開によっては、プロパティは、付けておくのがよい という例で
このVariant型の例を投稿するつもりでした。

Variant型なんですから、どんな型でも代入できることから、

> Dim myV As Variant
> Set myV = Range("B4:G4")
> myV = 123      '
  msgbox typename(myv)

で確認すれば Integer と表示されるので、もはや
Range("B4:G4")とは、関係がないからですよね!!


>---------------------------------------------------sample1
>Sub sample1()
> Dim MyRange As Range
> Set MyRange = Range("B4:G4")
> MyRange.Value = Split("あ い う え お か") '初期化
> 
> Dim myV As Variant
> Set myV = MyRange
> myV.Value = 123   '[B4:G4]に123が代入される
> MyRange = myV    '◆MyRangeには Emptyが代入される
>End Sub


>このときは
>> Set myV = MyRange
>でmyVに Range型 がセットされ、なおかつ
>> myV.Value = 123   '[B4:G4]に123が代入される
>で 変数myV をセットしたRangeオブジェクトとして使っているので
>値(123) が myV.Valueにセットされたのでしょうか?
そうだと思います。


>それで
>> MyRange = myV    '◆MyRangeには Emptyが代入される
>の行で MyRange.Valueが空白になるのは、
>「左辺は配列の値(Value)を要求しているのに右辺はRangeオブジェクトで
>配列では無いため、無効なデータとしてEmptyが代入される仕様」
>によるものでしょうか?
たぶん、オブジェクトが渡されると、左辺のValueでは、
右辺のオブジェクトの既定のプロパティまでチェックするんです。
で、既定のプロパティである.Valueが配列だと、Emptyを返します。
単体の値だと正常に値を設定します。

Sub sample2()
 Dim MyRange As Range
 Set MyRange = Range("B4:g4")
 Dim myV As Variant
 Set myV = Range("a1")
 myV.Value = 123
 MsgBox "ok"
 MyRange = myV
End Sub

参考に以下の二つのプロシジャーも実行してみてください。
前回投稿のリンク先でも例にあげていました。

Sub sample3()
Dim MyRange As Range
Set MyRange = Range("B4:g4")
Dim myV As Variant
Set myV = Range("a1,c1:f1")
 myV.Value = 123
MsgBox "ok"
MyRange = myV
End Sub
Sub sample4()
Dim MyRange As Range
Set MyRange = Range("B4:g4")
Dim myV As Variant
Set myV = Range("c1:f1,a1")
 myV.Value = 123
MsgBox "ok"
MyRange = myV
End Sub


自作クラスで既定のプロパティを値、配列、オブジェクトにして試してみると
もっと考察できるかもしれません。
1 hits

【74718】セルの書き換え手法2点の違いを教えてください。 化け猫 13/9/3(火) 1:42 質問
【74719】Re:セルの書き換え手法2点の違いを教えてく... 化け猫 13/9/3(火) 5:20 発言
【74720】Re:セルの書き換え手法2点の違いを教えてく... ichinose 13/9/3(火) 6:18 発言
【74726】Re:セルの書き換え手法2点の違いを教えてく... 化け猫 13/9/4(水) 4:51 発言
【74727】Re:セルの書き換え手法2点の違いを教えてく... ichinose 13/9/4(水) 6:34 発言
【74728】Re:セルの書き換え手法2点の違いを教えてく... 13/9/4(水) 7:41 回答
【74731】Re:セルの書き換え手法2点の違いを教えてく... kanabun 13/9/4(水) 10:47 発言
【74733】Re:セルの書き換え手法2点の違いを教えてく... ichinose@食事中 13/9/4(水) 12:58 発言
【74747】Re:セルの書き換え手法2点の違いを教えてく... 化け猫 13/9/6(金) 23:32 発言
【74749】Re:セルの書き換え手法2点の違いを教えてく... ichinose@ 13/9/7(土) 7:51 発言
【74753】Re:セルの書き換え手法2点の違いを教えてく... 化け猫 13/9/7(土) 11:39 お礼
【74751】Re:セルの書き換え手法2点の違いを教えてく... kanabun 13/9/7(土) 8:45 発言

7585 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free