『でっきるかな?でっきるかな?はてはてフフ~♪』どうもoReです。
今回は、バーコードと部品画像を連動して表示させていきます。
LoadPicture関数
・Load ロォゥドゥ ・Picture ピィクチャ
Loadは、『読み込み』という意味みたいです。
構文
LoadPicture([FileName])
LoadPictureの引数に画像のファイル名を渡すと、
その画像を読み込んでくれるようです。
さっそく使ってみましょう。
※前回設定した、Pictureの所は消しておきましょう。
画像の読み込み
バーコードをピッと読み込んだら、画像を表示させるので
↓Mainフォームの、この辺に追記ですかね
'バーコード入力
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim Knskcell As Range
If KeyCode = 13 Then
Label16 = ""
Label17 = ""
Label18 = ""
Label19 = ""
Label20 = ""
Label21 = ""
Set Knskcell = Columns(3).Find(what:=TextBox2, lookat:=xlWhole)
If Knskcell Is Nothing Then
MsgBox "部品が登録されていません。"
TextBox2 = ""
Else
Label16 = Knskcell.Offset(0, -1)
Label17 = Knskcell.Offset(0, 0)
Label18 = Knskcell.Offset(0, 1)
Label19 = Knskcell.Offset(0, 2)
Label20 = Knskcell.Offset(0, 3)
Label21 = Knskcell.Offset(0, 4)
Image1.Picture = LoadPicture("test.jpg")
End If
End If
End Sub
でっきるかな? 動作確認してみましょう♪
(# ゚Д゚)『できるかな?じゃねー!!やるんだよっ!!』byのっぽさん
full path フルパス
・full フゥル ・path パァス
fullは、『いっぱい』とか、『満杯』という意味みたいです。
pathは、『小道』という意味みたいです。
フルパスは、そのファイル名までの道筋を全部書いたものって感じで、
LoadPictureの引数には、フルパスを渡さないとダメ見たいです。
だったら、LoadPicture([FullPath])って書いてほしいよね。
パスの確認
・ファイルを選択→右クリック→プロパティ
『C:\Users\oRe\Desktop』これがパスです。(フォルダパスともいうみたい)
まあ、わかるとは思いますが一応
test.jpgがある場所は、
『Cドライブ→Users→oRe(ユーザー名)→デスクトップ』
このパスにファイル名を付けたものがフルパスとなります。
『C:\Users\oRe\Desktop\test.jpg』←フルパスだお!!
※\で階層を区切るみたいね
フルパスへ変更
Image1.Picture = LoadPicture("C:\Users\oRe\Desktop\test.jpg")
※スマホ等で見ると、『\』が『\』と表示されます。
※ご自身のフルパスに変更してくださいね(笑)
これで、動作確認すると
ちゃんと、画像が読み込まれてますか?
画像の削除
この状態で入出庫した場合、画像がImageに残ってしまいます。
読み込んだ画像を消すには、
Image1.Picture = LoadPicture()
もしくは、
Image1.Picture = Nothing
で消せるので、UserForm_Initializeに追記しますか。
'Main初期化
Private Sub UserForm_Initialize()
Dim LastRow As Long
LastRow = Sheet2.Cells(Rows.Count, 9).End(xlUp).Row
If LastRow > 2 Then
ListBox1.ColumnCount = 8
ListBox1.ColumnWidths = "110;50;40;110;110;120;30;30"
ListBox1.List = Sheet2.Range("B3:I" & LastRow).Value
End If
Call ComboSet(ComboBox1, Sheet3, 2)
ComboBox1 = ""
TextBox2 = ""
TextBox3 = ""
Label16 = ""
Label17 = ""
Label18 = ""
Label19 = ""
Label20 = ""
Label21 = ""
Image1.Picture = LoadPicture()
End Sub
入出庫した後、ちゃんと画像が消えてますか?
バーコードと画像の連動
・画像を複数準備してください。
・デスクトップに画像を置くと、デスクトップが画像だらけになってしまうので、
適当なところに画像用のフォルダーを作成しましょう。
・画像のファイル名をバーコードにすると、長くなってしまうので、
部品管理№にしましょうか。
私の場合は、ドキュメントに部品画像フォルダーを作り、画像を2枚用意しました。
↓こんな感じ
※最近、いいちこ飲んでないから写真がとれませんでした。
赤霧おいしいよね(*´ω`)
・画像のパスは、
『C:\Users\oRe\Documents\部品画像』
・ファイル名は、
部品管理№2いいちこ赤霧→『2.jpg』
部品管理№3マルボロ→『3.jpg』
バーコードをピッとすると、Label16に部品管理№が入りますよね?
なので、Label16をフルパスにぶっ込みますか。
↓こんな感じ
'バーコード入力
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
省略
Else
Label16 = Knskcell.Offset(0, -1)
Label17 = Knskcell.Offset(0, 0)
Label18 = Knskcell.Offset(0, 1)
Label19 = Knskcell.Offset(0, 2)
Label20 = Knskcell.Offset(0, 3)
Label21 = Knskcell.Offset(0, 4)
Image1.Picture = LoadPicture("C:\Users\oRe\Documents\部品画像\" & Label16 & ".jpg")
End If
End If
End Sub
動作確認すると、
でも、画像がない場合エラー吐きますけどね!!
(゚∀゚)『アハハハハ』
まとめ
次回 画像がない場合どがんかするばい
コメント
お世話になります。
画像がない場合エラーになる対策はどのようなプログラムでしょうか?
ヤマザキ様
はじめまして。
コメントありがとうございます。
>画像がない場合エラーになる対策は…
Dir関数を使ったものになります。
Dir関数で検索すれば、詳しく説明されたサイトが
たくさんありますので、そちらの方を参考にしてみてください。
お世話になっております。
こちらのサイトのおかげでド初心者の自分でもなんとか形になってきました。
ひとつ質問させて頂きたいのですが、データベース等のシートに
数値が入力されている部分を手入力ができないようにするにはどうしたら良いでしょうか?
シートの保護等ではマクロも拒否されてしまうので、ググった方法で試してみたもののうまくいきません。
申し訳ありませんが、ご教授頂けますでしょうか?
宜しくお願い致します。
BOBO様
はじめまして。
コメントありがとうございます。
>手入力ができないようにする…
>シートの保護等ではマクロも拒否されてしまうので…
やった事ないので、私もググってみました(笑)
例)Sheet1(データベース)
↑これを、Workbook_Open()プロシージャの一番上に書くと
データベースシートを保護し、マクロは拒否されなくなりました。
>数値が入力されている部分を…
部分的に保護するには、Lockedプロパティと言うものがあるようです。
VBA Lockedでググると出てくると思います。
うまくいかなかった場合は、またコメントください。