dポイントプレゼントキャンペーン実施中!

6年程前に、市販のBVA参考書をベースに、PCでアルバム閲覧Softを自作する折、デジカメの***.JPGの撮影日時を読み込むVBA_codeに手こずり、この「教えてGoo」でいろいろヒントを頂いて、完成できました(多謝)。
**現在、当時のWindows8から、Windows11 Proに移行中で、一か所、VBA_Codeで苦戦中です。
画像4枚を貼りました。VBA_UserForm1のListBox1で、写真リスト番号2389が、番号23と表示されて、下2桁の89が隠れてしまいます。一か所書き換えればと思いますが、どのCodeを書き換えれば良いか見当がつきません。 **** 何かヒントを頂ければ幸いです。****

まず、VBA_Codeを足ります。あと画像3枚を追加添付します。

********** VBA_UserForm1、ListBox1 のCode
' *** UserForm1 code
' Universal Dim
Dim Fname As String
Dim RowPos As Integer
Dim zycount As Integer

Private Sub Frame1_Click()
End Sub

Private Sub Image1_Click()
End Sub

Private Sub TextBox8_Change()
End Sub

Private Sub UserForm_Initialize()

Dim i As Integer
Dim Str1 As String
Dim Str2 As String

' RowPos as integer as Universal
' zycount As Integer as Universal

Worksheets(1).Select
RowPos = 11
zycount = 1
Do
Str1 = Cells(RowPos, 3) ' PhotoName 日本語
Str2 = Cells(RowPos, 2) ' PhotoName カメラ連番FileName xxx.jpg
ListBox1.AddItem (zycount)
ListBox1.List(zycount - 1, 1) = (Str1)
RowPos = RowPos + 1
zycount = zycount + 1
Loop While Str2 <> ""
'
ListBox1.RemoveItem RowPos - 12
'setting Initial Photo=The last
On Error GoTo ErrorHandler

ListBox1.Selected(RowPos - 13) = True 'ListBox1_Clickと等価 一番最後にセット
' ListBox1.Selected(0) = True 'ListBox1_Clickと等価 一番最初にセット

UserForm1.Image1.PictureSizeMode = fmPictureSizeModeZoom
Exit Sub

ErrorHandler:
MsgBox "表示する写真が一枚も登録されていません" & vbCr & vbCr & _
"「写真追加作業」で、写真を登録してから、写真閲覧ボタンをクリックしてください。"
End
End Sub

Private Sub CommandButton1_Click()
Unload Me
UserForm2.Show
End
End Sub


Private Sub ListBox1_Click()
Dim myPath As String

' Dim Fname As String as Universal
' RowPos as integer as Universal
' zycount As Integer as Universal

RowPos = ListBox1.ListIndex + 11

With Worksheets(1)
myPath = .Cells(RowPos, 1)
' myPath = "C:\Users\ZY\Documents\柳澤写真\20xy年"
Fname = .Cells(RowPos, 2) '写真番号 xxx.jpg File Name
TextBox6.Value = .Cells(RowPos, 3) 'Photo Name
TextBox3.Value = .Cells(RowPos, 4) 'Date
TextBox4.Value = .Cells(RowPos, 5) 'Place
TextBox5.Value = .Cells(RowPos, 6) 'Memo
TextBox1.Value = .Cells(RowPos, 7) 'Camera
TextBox2.Value = .Cells(RowPos, 8) 'Size
TextBox8.Value = myPath & " \" & Fname 'Photo Address"
End With

Fname = myPath & "\" & Fname
Image1.Picture = LoadPicture(Fname) '写真表示
End Sub

Private Sub CommandButton2_Click()
UserForm1.Image1.PictureSizeMode = fmPictureSizeModeClip
Image1.Picture = LoadPicture(Fname)
End Sub

Private Sub CommandButton3_Click()
UserForm1.Image1.PictureSizeMode = fmPictureSizeModeZoom
Image1.Picture = LoadPicture(Fname)
End Sub



Private Sub TextBox1_Change()
Worksheets(1).Cells(RowPos, 7) = TextBox1.Value 'カメラ
End Sub

Private Sub TextBox2_Change()
Worksheets(1).Cells(RowPos, 8) = TextBox2.Value 'サイズ KB
End Sub

Private Sub TextBox3_Change()
Worksheets(1).Cells(RowPos, 4) = TextBox3.Value '更新・撮影日時
End Sub

Private Sub TextBox4_Change()
Worksheets(1).Cells(RowPos, 5) = TextBox4.Value '撮影場所
End Sub

Private Sub TextBox5_Change()
Worksheets(1).Cells(RowPos, 6) = TextBox5.Value 'メモ
End Sub

Private Sub TextBox6_Change()
Worksheets(1).Cells(RowPos, 3) = TextBox6.Value 'Revised Photo Name
ListBox1.List(ListBox1.ListIndex, 1) = TextBox6.Value 'Revised Photo Name
End Sub

Private Sub ExitBtn_Click()
Unload Me
Application.Quit
'/// AutoOpen.Show
End
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Unload Me
Application.Quit
End
End If
End Sub ***以上 2023/10/11 PLSヘルプme

「Windows 11 Pro での、VB」の質問画像

質問者からの補足コメント

  • 追加画像1

      補足日時:2023/10/11 07:52
  • 追加画像2

      補足日時:2023/10/11 11:37

A 回答 (2件)

こんにちは



コードはどこがどうなっているのかわからないので、見ていませんけれど・・

添付の画像の
>Fontのサイズを10から26に変えると、リスト番号が~~
を読む限り、単純にリストの列幅が足りないだけと思われます。

文字サイズが小さければきちんと表示できるということなので、指定フォントで必要な文字数を表示できる幅を確保していないだけではないのでしょうか?
リストボックスの列幅は、ColumnWidths属性で設定可能です。
https://learn.microsoft.com/ja-jp/office/vba/lan …
    • good
    • 1
この回答へのお礼

fujillin様
分かりにくい質問に、ご回答頂き、ありがとうございます。

オブジェクトの表示画面で、ListBox1のWidth=430.3で、Font=26でも、写真名を全部表示できる、十分なスペースを設定してあります。

現在の不明点は、幅=430.3に、行番号と写真名が表示されていますが、
何が、行番号と写真名にスペースを分け与えているのかです。

*プロパティー_ListBox1では、この配分を操作できる項目はありません。
**VBAのデフォルト値で、配分が決まっているのでしょうか?
***自分のCodingでコントロールできるのでしょうか? /以上

お礼日時:2023/10/11 16:51

No1です。



>**VBAのデフォルト値で、配分が決まっているのでしょうか?
調べてはいませんが、デフォルトは多分均等割りではないでしょうか?
(テストしさえすれば、わかることと思います。)

>***自分のCodingでコントロールできるのでしょうか? /以上
No1の回答で、列幅を指定するように回答したつもりですけれど?

回答を読む気などないのなら、無駄ですのでこれにて・・・
    • good
    • 1
この回答へのお礼

fujillin様

早速、重ねて、ご回答頂き、ありがとうございました。
やっと、ListBox1のプロパティの、Widthではなく、ColumnWidthsの指定変更で、望みの行番号スペースを確保できました。

ColumnWidthsに触るのは、初めてでした。
7年振りのVBAで、新ワイドモニターに合わせて、写真を表示するなど、VBA修正にまだ混乱しております。また不明の点が解決できなかったら、ご教授をお願いいたします。

お礼日時:2023/10/11 18:26

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

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


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