2011年06月08日

ExcelVBAで選択範囲に対する処理実行

Excelで選択した範囲の各セルに対して処理を行いたいと思った.

今回はVBAマクロを使う.


a. 選択しているものがセルではなく,グラフなどのオブジェクト
b. 選択している範囲が列や行全体,またはシート全体など無限大



となった場合にはエラーにしたいと思ったのでその方法をメモ.

選択範囲を知るには,Selection を使えば良い.

a. については,オブジェクトの名前を得ることができるので,

TypeName(Selection) <> "Range"


を判定すれば良い.


b. については,少し手こずった.理由は以下の式,

Dim cnt as Integer
cnt = Selection.Cells.Count



としたときに,例えば列全体を選択していると,オーバーフローを起こしてエラーになる.
なんなの,Excel.
more read...
posted by maplewine at 19:00| Comment(0) | TrackBack(0) | VB | このブログの読者になる | 更新情報をチェックする

2009年06月13日

Excel VBA コントロールボックスとフォーム

Excel上に展開されているデータリストを
初心者でも使用しやすいようにボタンやチェックボックスなどを
使用したシートを構築しようと考えた。

デザインフォームを使用して、ポップアップウィンドウ上で
作るのでもよいのだが(この方がすぐにできそうだし?)
例えば、ある文字列やマクロ実行結果がエクセルシート上に
ある方が、コピペを含め色々便利かもしれないと思い、
シート上で作成することを決めた。

ちなみに自分はこういうコントロールI/Fの部分を作ったことが
ほとんどない。ちょっと前にasp.net の動作確認に使用したこと
くらいだろうか。
ってことで、ほとんどど素人みたいな悩みばかりでした。続きを読む
posted by maplewine at 12:39| Comment(0) | TrackBack(11) | VB | このブログの読者になる | 更新情報をチェックする

2009年06月10日

Excel VBA フィルタリング

Excel マクロのお話
条件によるフィルタリングを行おうとしたのだけど、
Autofilter は二つまでしか条件に使えず、
A かつ B という絞り込みはできるが、
A かつ B かつ C という絞り込みを組み込むことはできなかった。続きを読む
posted by maplewine at 12:33| Comment(0) | TrackBack(0) | VB | このブログの読者になる | 更新情報をチェックする

2009年06月02日

Excel VBA 図形をまとめて削除

複数あるグラフのうち、10個だけ残してほかを削除しようと思って
cnt = Activesheet.Chartobjects.Count
while cnt > 10
Activesheet.Chartobjects(cnt)
cnt = cnt - 1
wend

ってやってたのだけど、いつもcnt は0.
おかしいなーと思って考えてて、続きを読む
posted by maplewine at 15:18| Comment(0) | TrackBack(0) | VB | このブログの読者になる | 更新情報をチェックする

2009年04月24日

Excel マクロを外部から呼び出す

Excelを自動で10000位のファイルをさばいて
まとめようとしているのだけど、たまにパソコンのメモリが
不足しているのか、Excelが強制終了か、途中で原因不明の中断が起きる。
それを解決するために、
Excelのタスクを監視し、終了したら再実行させる仕組みをつくろうと思ったのだが
外部コマンドからExcelを起動し、マクロを実行する方法がわからない。

ネットでかるく調べたけど、
不可能です!
Microsoft Office アプリケーションでは、コマンドラインパラメーターの
インターフェース機能を持たせていません!


って教えてGooさんも言ってました。。。
posted by maplewine at 13:22| Comment(0) | TrackBack(1) | VB | このブログの読者になる | 更新情報をチェックする