
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【エクセル】シート内の表をUserFormに画像として表示させる方法
Excel(エクセル)
-
エクセルで貼り付けたオブジェクトの画像をユーザーフォームのイメージコントロールで表示する方法
Excel(エクセル)
-
EXCEL VBA 複数のImageコントロールにクリップボードに保存されている画像を表示したい
Visual Basic(VBA)
-
-
4
手作業で埋め込んだ、UserForm1.Image1の画像を、VBAコードで書き換えたい
Visual Basic(VBA)
-
5
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
6
VBA ユーザーフォーム Image1 貼り付け画像の保存?
Visual Basic(VBA)
-
7
【エクセルのマクロ】クリップボードのbitmapをフォームに表示させたい
Visual Basic(VBA)
-
8
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
9
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
10
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)保存したい
Visual Basic(VBA)
-
13
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
エクセル マクロ 相対パスから画像を読み込みたいです。
その他(Microsoft Office)
-
16
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
17
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
18
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
19
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
20
エクセルのマクロで特定フォルダ内のJPGファイルを検索して開きたいので
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【EXCEL VBA】ダブルクリックで...
-
VB6での画像のサイズ変更に関して
-
EXCEL VBA 複数のImageコントロ...
-
画像認識アルゴリズムについて
-
HP上で画像をUPできるよう...
-
背景画像の繰り返しについて
-
UWSCの画像認識と条件分岐につ...
-
画像のビット数を変更する方法
-
VBAのユーザーフォームのイメー...
-
画像のピクセルデータの取得
-
OpenCVで出力を24bitのbmpにす...
-
画像の存在チェック
-
エクセルのマクロでコンタクト...
-
ラジオボタンを押すと、ランダ...
-
画像の抽出
-
「ご処理進めて頂きますようお...
-
UPS警告音を止めたい
-
CloseとDisposeの違い
-
エクセルで、日付を入力すると...
-
エクセルVBAで、MsgBox やInput...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 複数のImageコントロ...
-
VBAのユーザーフォームのイメー...
-
Excel ユーザーフォームで表示...
-
【EXCEL VBA】ダブルクリックで...
-
スマホでサイトの画像を長押し→...
-
UWSC 画像判定と条件分岐について
-
HTMLで画像をポップアップで表...
-
「using Windows」でエラーが出る
-
画像のビット数を変更する方法
-
画像処理したBitmapをピクチャ...
-
UWSC「画像が無い場合」
-
背景画像の繰り返しについて
-
PowerPoint VBA で画像の鮮明度...
-
uwcs のマクロで画像認識をして...
-
gif 画像上の ボタンに リン...
-
画像が分割されて切り替わる、...
-
uwscの画像認識に失敗します。
-
C#で画像を他の画像に貼り付け...
-
vb.net 画像の透過について
-
MFCでCImageListに画像追加失敗
おすすめ情報