石鹸箱 IV

VBA研究所に集まる方々の憩いの場です。みなさん自由にお使いください。
ここでは VBA の質問は厳禁。

5886 / 7636 ←次へ | 前へ→

【1770】Re:Office 12 の互換性
 谷 誠之 E-MAIL  - 05/11/27(日) 22:43 -

引用なし
パスワード
   YU-TANG さん、谷です。

>ただ、ふと思ったのですが、コードが動くということと、それが意図
>した挙動になるかどうかはまた別ですよね。

そうですね。

プログラミングの世界にも「建前」と「本音」があります。
「建前」は、「実行環境が必ずこうなっているはずだ、という決め付けでプログラムを作ってはいけない」というものです。

私が個人的に気になるのは、「メニューが廃止され、『コマンド タブ』と呼ばれるUIが新たに実装された」という点です。

http://www.microsoft.com/office/preview/uioverview.mspx

私はマクロを作ると、それのためのメニューをわざわざ作るのは面倒なので、

  Dim SubMenu As CommandBarButton
  Set SubMenu = CommandBars("Worksheet Menu Bar").Controls("ツール(&T)").controls.Add(msoControlButton)
  With SubMenu
    .Caption = メニュー名
    .OnAction = マクロ名
    .Style = msoButtonCaption
  End With

みたいなことをやって、「ツール」メニューにメニュー項目を追加して動かすということを時々やっています。

もちろんこれは「『ツール』というメニュー項目がワークシート メニュー バーに必ず存在する」ということを前提に書いてあるコードであるわけで、「Excelは必ずこうなっているはずだ」と決め付けてコードを書いている、お行儀の悪いプログラムということになります。

>Excel 12 の最大行数は現行の 16 倍に当たる 1,048,576 行に拡張
>されるそうですが、

1,048,576行×16,384列 になるそうですね。

そうすると今日たまたま見かけた次のような
>コードはどうなってしまうんでしょう。
>
> Set LastCell = Range("A65536").End(xlUp)
>
>これって、割とよく見かける最終行の取り方だと思うのですが、
>Excel 12 では必ずしも真ではなくなってしまうわけで。

建前上は「Excelの最終行は 65536行だ」と決め付けて書いてあるコードなわけですから、これもマイクロソフトに言わせたら「お行儀の悪いプログラムだ」ということになりますね。

しかし、建前は建前。本音は本音。
2000年問題を思い出します。

YU-TANG さんのおっしゃるとおり、上記のコードは必ずしも真にはなりません。
例えばExcel 12 では、上記の拡張によって、ひとつのワークシートですべての都道府県のすべての郵便番号(約12万件)が表せるようになりました。だからといって12万行入力されているワークシートを作ったら、もう上記のコードは正常には動作しませんね。

使われているワークシート範囲を調べる UsedRange というプロパティがあるんですが、こいつ時々誤動作するんですよ。だからあまり使えない。

今まで列は 256列までだったので、不幸にも列を示す変数を Byte 型で宣言していた人は、コードの作り直しになることでしょう。

私が上で書いたコードは、正常に動作するかどうかわかりません。
そもそも、ワークシート メニュー バーにはもう「ツール」というメニューがないわけですから、おそらくエラーになってしまいます。(Excel 12 のベータ版を入手した人、誰か確認して、教えてください)

実行環境を「決め付けて」コードを書いた側が悪いのか、それともそんな開発環境しか提供してくれない側が悪いのか・・・

一方、Office 12 は、Windows XP 以降でしか動作しません。
これがどれほどの影響を与えるか、ということも楽しみです。
私は個人的に、Office 2000 以降を持っている人が Office 12 に乗り換えるという人は、ほとんどいないのではないか、と想像しています。
新しいPCを買ったら Office 12 がついてきたとか、ボリューム ライセンスで購入している企業が2年後ぐらいに全社的に入れ替えるか、のどちらかではないか、と。

しかし、全バージョンをサポートしていくのも大変でしょうねぇ・・・

379 hits

【1769】Office 12 の互換性 YU-TANG 05/11/27(日) 21:46
【1770】Re:Office 12 の互換性 谷 誠之 05/11/27(日) 22:43
【1771】Re:Office 12 の互換性 YU-TANG 05/11/27(日) 23:33
【1773】Re:Office 12 の互換性 Kein 05/11/28(月) 15:58
【1777】Re:Office 12 の互換性 YU-TANG 05/11/30(水) 6:13

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