目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
125 / 277 ←次へ | 前へ→

【165】Re:ちょっと気になる現象2 Is 演算子
Excel  ichinose  - 06/12/23(土) 22:30 -

引用なし
パスワード
   VBAを長くやられている方は、既にお分かりだと思います。

私は、VBAをやり始めて一年ぐらいは理由が分かりませんでした。

Range("A1") Is Range("A1") の結果が Falseになるのは、

Range("A1")という記述が実行される度に

Rangeオブジェクトは別インスタンスが作られているからなのです。

よって、
Range("A1") Is Range("A1")
は別々のオブジェクトを比較しているので Falseとなるのです。

Range("a1").value=Range("a1").value

この記述では、ふたつのインスタンスが作成され、Valueプロパティの
代入処理を行っています。

With Range("A1")
  .Value=.Value
  End With

尚、このように記述すると、インスタンスはひとつしか作成されていません。

Shapeでの結果も同じ理由です。

実際に見えているセル = Rangeオブジェクト
実際に見えている図形 = Shapeオブジェクト

というように錯覚しがちですが(私は、最初はそう解釈していました)、

Rangeオブジェクトは、セルを操作する窓口であり、

Shapeオブジェクトは、図形を操作する窓口にすぎません。

ひとつのセル、ひとつの図形に対して、
複数の窓口を存在させる事が出来るのです。

同じ図形を見ていても、違う窓口(オブジェクト)であれば、

Is演算子は、Falseを返します。

918 hits

【164】ちょっと気になる現象2 Is 演算子 ichinose 06/12/23(土) 22:25 Excel[未読]
【165】Re:ちょっと気になる現象2 Is 演算子 ichinose 06/12/23(土) 22:30 Excel[未読]

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
125 / 277 ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free