アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2010でVBAを勉強中です。

お世話になります。
初めての質問なので、情報不足なこともあるかもしれません。
その時はご指摘をお願いいたします。

現在、ユーザーフォームにImageコントロールを設置し、クリップボードから画像を読み込んで表示しています。
クリップボードから画像を読み込むロジックは下記質問の回答を参考に(というかそのまま)させて頂きました。
https://oshiete.goo.ne.jp/qa/2885043.html

最初はImageコントロールが1つだったので問題なかったのですが、2つ設置する必要が出てきました。
2つ目を表示しようとしたところ、最初に読み込んだ画像が表示されなくなりました…。

流れは以下の通りです。
※ユーザーにはワークシート等、エクセルの画面は見えないようになっています。
①シートの内容を画像としてコピー、ペースト(画像A)
②画像Aをクリップボードに保存
③Image1にクリップボードの画像を読み込む
④別シートの内容を画像としてコピー、ペースト(画像B)
⑤画像Bをクリップボードに保存
⑥Image2にクリップボードの画像を読み込む
⇒Image2は表示されるが、Image1には何も表示されない。

デバッグをしてみたところ、上記手順の④の処理が終わった時点でImage1に何も表示されなくなりました。
クリップボードの情報を見続けているということかと思います。

別の手段として、画像をファイル化してLoadPictureで読み込むことも考えたのですが、個人情報を含む画像のため、ファイル化はしたくありません。
(クリップボードに残ってる時点でアレですが…。本来は最終的にクリップボードを空にしたいです。)

クリップボードからデータがなくなってもImageに表示させることはできないでしょうか?

どうか力を貸してください…。

宜しくお願いいたします。

A 回答 (1件)

こちらを参考にして


https://detail.chiebukuro.yahoo.co.jp/qa/questio …

こちらの
http://www.moug.net/faq/viewtopic.php?t=75669
K.Hiwasa さんの解答から

| (1)フォームが既に表示されていること。
| (2)1つ目の設定と2つ目の設定の間にDoEvents

で、z1rcomさん のボタンクリックイベントをアレンジすると

Private Sub CommandButton1_Click()
 Sheets("Sheet1").Range("A1:C3").Copy
 Set Image1.Picture = CreatePictureFromClipboard()
 Image1.Visible = False
 Image1.Visible = True
 DoEvents
 Sheets("Sheet2").Range("A1:C3").Copy
 Set Image2.Picture = CreatePictureFromClipboard()
 Image2.Visible = False
 Image2.Visible = True
End Sub

こんな感じになります。

ユーザーフォームを開いたときに表示したいなら
UserForm_Activate イベントで。
    • good
    • 0
この回答へのお礼

ありがとう

ソースまでご提示いただき、ありがとうございます。
お礼が遅くなり申し訳ありません。

ご提示いただいたソースで試してみましたがうまく表示できませんでしたので、色々と試しているところです。
ファイル化してLoadPictureも視野に入れて進めてみます‥。

お礼日時:2017/08/12 22:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A