Home » Python » xlwingsの使い方 » xlwingsのRangeは同じセルを参照していてもis演算子でTrueにならない

xlwingsのRangeは同じセルを参照していてもis演算子でTrueにならない

動作検証バージョン:Windows 10 + Python 3.7.3 + xlwings 0.15.5 + Excel 1905

Excel VBAのRangeオブジェクトとは異なり、OpenPyXLのCellオブジェクトが、同じセルを参照している場合にis演算子で比較できることを確認しました。

xlwingsのRangeオブジェクトの場合、どうなのかも気になります。

[スポンサードリンク]

xlwingsのRangeをis演算子で比較する

xlwingsの場合、同じセルを参照していてもFalseだろうと思いつつ、以下のようなスクリプトを作成して実行しました。

import xlwings

wb = xlwings.Book('C:\\temp\\foo.xlsx')
sht = wb.sheets[0]

rng_1 = sht.range('A1')
rng_2 = sht.range('A1')
print(rng_1 is rng_2)

結果は、予想通りFalseです。

xlwingsのRangeは取得するたびに識別値が異なる

Pythonのid()関数で識別値を確認すれば、

もちろん別です。

ちなみに、変数ではなくid()関数の引数にRangeを取得するコードを指定しても、

上図のとおり、実行するたびに別の識別値となる(!)ことがわかります。

Excel VBAのObjPtr関数の場合

この挙動はExcel VBAとは異なります。

Excel VBAの場合、同じRangeオブジェクトを取得するコードを、ObjPtr関数の引数に続けて指定すれば、

同じ値が返されます。

最終更新日時:2019-07-03 13:55

[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsのRangeは同じセルを参照していてもis演算子でTrueにならない

「xlwingsの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.