Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : Excel 2010)
excelのシートのハンドル
投稿日時: 19/08/29 19:43:23
投稿者: たぬすけ

お世話になります。
 
Excelのざっくりしたハンドルはクラス名"XLMAIN"でとれますが
シート毎のハンドルはとれるのでしょうか。
 
お手数をおかけいたしますが、よろしくお願いいたします。

回答
投稿日時: 19/08/29 22:55:16
投稿者: simple

回答ではなくてすみません。
余り見ない質問です。
もし仮にそういうものがあり、
取得できたとしたら、どのように使われるのでしょうか。
代替できるものがあるかもしれないので、お聞きしています。

回答
投稿日時: 19/08/30 09:00:09
投稿者: mattuwan44

ハンドルというのは、
ウィンドウハンドルのことでしょうか?
 
シート毎と言われると、エクセルは基本的には、シート毎にウィンドウがあるわけではないので、
シート毎のウィンドウハンドルと言われても、存在しないものは取得できないような気がしますが。。。
 
取得できたとして、それをどのように使いたいかが、興味あるところです。
どのようなアプリ(あるいは、ゆーざーいんたーふぇーす?)を作ろうとしているかを教えていただけると、
方向性が見えてくるんではないでしょうか?

回答
投稿日時: 19/08/30 17:41:31
投稿者: ライスマン

ど素人です。
Windowハンドルの取得
http://excel.syogyoumujou.com/memorandum/get_hwnd.html
質問されてもお答えできませんので悪しからず^^

投稿日時: 19/08/30 21:01:26
投稿者: たぬすけ

>simpleさん
>mattuwan44さん
>ライスマンさん
  
質問に答えていただきありがとうございます。
現在ボタンを押したらループ処理をしています。
その際進捗を表すものを表示しています。
具体的にはハンドルから、デバイスコンテキストをとり
CreateSolidBrushを赤に設定し、Rectangleで進捗
グラフを描いています。
実行中に他のシートを表示すると同じ位置にグラフを
描くので、その場合非表示にしたかったです。

回答
投稿日時: 19/08/31 06:06:34
投稿者: simple

> 実行中に他のシートを表示すると同じ位置にグラフを
> 描くので、その場合非表示にしたかったです。

特定のシートを非表示にしたいということですか?
SheetのVisibleプロパティをFalseにします。
Application全体なら
    Application.Visible = False
です。
 
ちなみに、
処理の進捗状況を示すには、
 
「【ExcelVBA入門】進捗状況をプログレスバーで確認する方法を徹底解説」
https://www.sejuku.net/blog/72730
 
「ステータスバーを使う」
http://officetanaka.net/excel/vba/tips/tips13.htm
 
といった方法が通常は用いられますが、
それでは何か不都合がありますか?

投稿日時: 19/08/31 07:01:15
投稿者: たぬすけ

>simpleさん
ありがとうございます。
 
シートを非表示にするではありません。
シート1では描画をし、シート2を開いた場合は(上の階層なので)
描画されるので、その描画をやめたいのです。
そのためにハンドルがとれればシート1限定で描画させられのかなと
思いました。
 
進捗率だけでなくて処理内容も表示させています。