質問: excelvba すいません。簡単なことなのかもしれませんが、困っています。 普段c++を使用して仕事をしているのですが、急遽excelvbaを使用してexcelのマクロを作成しなければならなくなりました。 visualbasicはまったく触ったことないので質問させていただきます。 excelファイルの保護されていないセルの行数と列数を数えたいのです。 excelvbaで記述するとどういったコードになるのでしょうか? ちなみにexcel2007を使用しています。 皆さんの知恵をお貸しください。
回答: 行数と列数を数えるの意味が分からないです。 保護するとはおそらくセルの「ロック」チェックが入っているか入っていないかということですかね? 一つ一つのセルに対してそのチェックを行うことは出来ますが、数えるのはセルの個数になるのでしょうか。それとも該当するセルのaddressを全て取得するということになるのでしょうか。 またすべてのセルに対してそのチェックを行うことになると、結構処理に時間がかかりますよ。 65,536 * 256 = 16,777,216回のループが発生することになります。 とりあえずactiveなsheetに対して全てのセルの中でロックがオフになっている個数のカウントをするだけなら下記のような感じになります。 sub test() dim r as range dim i as long for each r in activesheet.cells if r.locked = false then i = i + 1 end if next msgbox i end sub