
VBA初心者です。excel2016を使用しています。
=目標作業=
①「選択」ユーザーフォームのImage1にコマンドボタンから画像保存フォルダにある画像を選択してImage1に表示させる。
②「保存」Image1に選択画像を表示した状態を登録する。
③「終了」ユーザーフォームの終了
以上3工程を行った後にもう一度①「選択」ボタンを押したときに②で登録した画像が表示された状態でユーザーフォームを開きたいです。
=質問=
②「保存」ができません教えていただきたい。
=現在のUserForm1の状況=
Private Sub CommandButton1_Click() ・・・・・・・・・①
'[ファイルを開く]ダイアログボックスを表示
PicFile = Application.GetOpenFilename( _
"画像ファイル,*.jpg;*.jpeg;*.gif;*.tif;*.png;*.bmp")
If VarType(PicFile) = vbBoolean Then Cancel = True: Exit Sub
'画像をロードする
UserForm1.Image1.Picture = LoadPicture(PicFile)
'Imageサイズを自動的に画像に合わせる
UserForm1.Image1.AutoSize = False
End Sub
Private Sub CommandButton2_Click() ・・・・・・・・・②
???
End Sub
Private Sub CommandButton3_Click() ・・・・・・・・・③
Unload UserForm1
End Sub

No.1ベストアンサー
- 回答日時:
こんにちは
UserForm1.Image1にPicture登録後、次回UserForm1.Showした時
前回登録したPictureをLoadしたいと言う事でしょうか
思い付く方法は、いくつかありますが、最も簡単な方法は
力技のような感じになります。
PicFile変数の宣言 モジュールレベル変数またはパブリック変数で宣言
Dim PicFile As String
Private Sub CommandButton1_Click() '①
'[ファイルを開く]ダイアログボックスを表示
PicFile = Application.GetOpenFilename( _
"画像ファイル,*.jpg;*.jpeg;*.gif;*.tif;*.png;*.bmp")
If VarType(PicFile) = vbBoolean Then Cancel = True: Exit Sub
'画像をロードする
UserForm1.Image1.Picture = LoadPicture(PicFile)
'Imageサイズを自動的に画像に合わせる
UserForm1.Image1.AutoSize = False
End Sub
Private Sub CommandButton2_Click() '②
Worksheets(1).Range("A1") = PicFile
End Sub
Private Sub CommandButton3_Click() '③
Unload Me
End Sub
Private Sub UserForm_Initialize() 'UserForm1が開く時に実行される
If Worksheets(1).Range("A1") <> "" Then
On Error Resume Next '念のため
With Image1
.Picture = LoadPicture(Worksheets(1).Range("A1").Text)
.AutoSize = False
End With
End If
End Sub
未検証ですが、
インデックス1のシートのA1セルを利用する方法です。セルは使用しない所であれば何処でも可、セルの書式などを変更しておけば見えないように出来ます
難しい方法としては
UserForm1内にラベルやテキストボックス、を非表示で作り
そのCaptionやTextにデザインモードで書き込むとか、Image1のPictureプロパティに書き込むとかになりますが、UserForm Load時には実行できないのとVBComponentオブジェクトを操作する必要がありますので割愛します。
回答ありがとうございます。
>UserForm1.Image1にPicture登録後、次回UserForm1.Showした時
前回登録したPictureをLoadしたいと言う事でしょうか
→まさにその通りです。
そして無事に保存することができました。
Dim PicFile As Stringがないと保存できないことがわかりました。
丁寧にありがとうございました。
また、表示する写真を増やしたりともう少し改良していきたいと思っていますので、またご指導願えたらと思います。
No.3
- 回答日時:
登録した画像のパス(変数PicFileの情報)を何処かに保存しておいて、UserForm_InitializeイベントプロシジャでLoadPictureするっていうのが一般的だと思います。
保存先ですが、ブックを再度開いた時も同じ動作がご希望なら、適当なシートの適当なセルに保存しておくことになると思います。
No.2
- 回答日時:
こんにちは
ご指定の状態を固定したければ、通常操作(VBAエディタ)でのFormの編集で、画像を設定した状態にする必要があります。
具体的には、VBProjectからFormにアクセスして編集すれば宜しいかと。
以前、ほぼ同様のご質問がありましたので、参考までに挙げておきます。
https://oshiete.goo.ne.jp/qa/12176329.html
回答ありがとうございます。
参考拝見させていただきました。
私には少々ハードルが高い内容のようでした。
教えていた内容が理解できるようになりたいです。
ご指導ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
このQ&Aを見た人はこんなQ&Aも見ています
-
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
手作業で埋め込んだ、UserForm1.Image1の画像を、VBAコードで書き換えたい
Visual Basic(VBA)
-
-
4
EXCEL VBA 複数のImageコントロールにクリップボードに保存されている画像を表示したい
Visual Basic(VBA)
-
5
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
6
【エクセルのマクロ】クリップボードのbitmapをフォームに表示させたい
Visual Basic(VBA)
-
7
VBA ユーザーフォーム Image1 貼り付け画像の保存?
Visual Basic(VBA)
-
8
エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)保存したい
Visual Basic(VBA)
-
9
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
10
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
13
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
14
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
15
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
16
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
17
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
18
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
19
エクセルVBAでマルチページの切り替え方法の件で
Excel(エクセル)
-
20
フォームでPDFを表示させたいときは
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
C++ 画像処理
-
画像のビット数を変更する方法
-
イメージマップで画像変え
-
生成AI画像について
-
UWCSでのランダムクリック入力...
-
同じ画像を複数回表示させる
-
文字化けでしょうか?
-
UWSCの画像認識と条件分岐につ...
-
画像が分割されて切り替わる、...
-
ホームページをつくっていて、...
-
畳み込みニューラルネットワー...
-
「using Windows」でエラーが出る
-
画像のピクセルデータの取得
-
PowerPoint VBA で画像の鮮明度...
-
uwscについて質問です。
-
Excelで画像クリックのアテンシ...
-
OpenCVによる面積算出
-
背景画像の繰り返しについて
-
エクセルで、日付を入力すると...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景画像の繰り返しについて
-
EXCEL VBA 複数のImageコントロ...
-
【EXCEL VBA】ダブルクリックで...
-
uwcs のマクロで画像認識をして...
-
UWSCの画像認識と条件分岐につ...
-
UWSCでループ処理がうまくいき...
-
vb.net 画像の透過について
-
「using Windows」でエラーが出る
-
Excel ユーザーフォームで表示...
-
UWSC 画像判定と条件分岐について
-
uwscの画像認識に失敗します。
-
画像のビット数を変更する方法
-
jqueryスライダーを2段でスライ...
-
画像処理したBitmapをピクチャ...
-
UWSCの色判定
-
UWSCについて
-
スマホでサイトの画像を長押し→...
-
VBAのユーザーフォームのイメー...
-
gif 画像上の ボタンに リン...
-
画像のピクセルデータの取得
おすすめ情報