2015-08-28

Excel VBA マクロ挙動今日学習したこと

変数Object と Variant は違う
変数オブジェクト(シートやシェイプやマクロモジュールなど)を入れて扱いたいとき、Variantは値渡しでObjectは参照渡し、とは知っていたが、Variantに「Object型のポインタがわたっているのなら、Variant型でもObject型でも参照元オブジェクトアクセスできるだろう」と思っていた。で、Variant型変数に入れて扱ったオブジェクトは、(画面をみると)オブジェクト操作内容が反映されているようなのだが、なぜかSaveしても保存されていない。そのブックを開くと消えていた。Object型で扱ったら、しっかりそのブックに反映されていた。とにかく、Variantは何でもかんでも使える型、との認識ちょっと違うようだ。Variant型で何かを扱った際に反映されない系の挙動がおきたら、Object型で試してみるべし。
■ (手操作場合も)セルの「貼り付け」と「形式指定して貼り付け..すべて」とは違う
ボタンコントロールなどがそのセル上にあったとき、前者はコピーされ、後者コピーされない。
名前定義がされているセルを別のブックに貼り付けすると、名前定義作成される。しかも、コピー元のブックにリンクされている。
リンクを切るには、コピー先のブックのNamesオブジェクトでその名前定義を削除&再作成すればよいだろう。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん