|
お世話になります。昨日初めてUserFormにトライしてみましたがうまくいきません。
内容は、指示命令の順番と実際の画面表示の順番が逆転するとうい現象がおきたことです。
『目的とこれまでの方法』 今は下記の(1)(3)をマクロ処理しています
(1)スライドショーをしながら個々の写真のファイル名を取得
(2)取得したファイル名の隣のセルに手作業で「削除」「A」「B」などを記入
(3)(2)の情報により指定フォルダーへの移動、削除などを実施、ファイル整理する
『やりたいこと』
上記の(1)〜(3)を一括で行ないたい・・・今回の質問は(1)〜(2)について
写真を見ながら次ぎのファイル操作への情報をコマンドボタンでシートへ入力したい。
『問題点★とこれまでの検証』
・UserForm1 Showを無効にした下記コードの Sub スライドショー() は正常稼動します
・★UserFormを作成し(コマンドボタン3個だけ)、マクロ稼動すると
「情報入力」→「UserForm表示」→「コマンドボタン押す」→「写真表示」→「UserForm表示」→以下省略
という順番の画面表示になり、目的の「写真を見てから情報入力」が出来ません。
・UserForm1 Show にブレークポイントを設定して画面を確認すると
「情報入力」→「写真表示」→「UserForm」→「コマンドボタン押す」→「写真表示」→省略
という順番で目的の順番に合っています。
なぜ、デパック処理と一括処理で画面表示の順番が変わるのかがわかりません。
初めてのUserFormで、目的の流れにするにはどうしたらよいのか分りません。
宜しくお願いします。
またデパック処理で困ったのですが、UserFormのコードを確認しながらシート画面を確認しようとしたら、画面切り替えが出来ませんでした。
これは正常なんでしょうか?UserFormのコードから抜け出すと大丈夫なんですが・・・。
恥ずかしい内容ですが、まわりに経験者もなく、本にも書いていませんでした。
以上、2点ご教授願います。
Sub スライドショー()
Dim FileName As String
Dim i As Integer, myFile As String
Dim intStr As String, strMsg As String, theVar As Integer
Dim wid As Integer, takasa As Integer, Ratio As Double
Sheets("データー").Select
Columns("A:C").Clear
Application.Goto reference:=Worksheets("表示板").Cells(1, 1), Scroll:=True
strMsg = "フォルダー名を入力。"
intStr = InputBox(strMsg)
If intStr = "" Then: Exit Sub
Sheets("データー").Range("A1").Value = intStr
theVar = MsgBox("拡大しますか、原寸表示しますか?" & Chr(1) & Chr(13) & _
"はい→拡大 いいえ→原寸", vbYesNo)
Application.DisplayFullScreen = True
i = 1
FileName = Dir("C:\My Documents\仮保管写真\" & intStr & "\*.*")
Do While FileName <> ""
myFile = FileName
Application.ScreenUpdating = False
Worksheets("表示板").Activate
If theVar = 6 Then
With ActiveSheet.Pictures.Insert("C:\My Documents\仮保管写真\" & intStr & "\" & myFile)
.Top = Range("A1").Top
.Left = Range("A1").Left
.ShapeRange.LockAspectRatio = msoTrue
.Width = 680
.Height = 550
End With
Else
With ActiveSheet.Pictures.Insert("C:\My Documents\仮保管写真\" & intStr & "\" & myFile)
.Top = Range("A1").Top
.Left = Range("A1").Left
.ShapeRange.LockAspectRatio = msoTrue
' .Width = 680
' .Height = 550
End With
End If
UserForm1.Show
Application.ScreenUpdating = True
Sheets("データー").Cells(i + 1, 1).Value = i
Sheets("データー").Cells(i + 1, 2).Value = FileName
Worksheets("表示板").Activate
Application.Wait (Now + TimeValue("00:00:03"))
ActiveSheet.Pictures(1).Delete
FileName = Dir()
i = i + 1
Loop
MsgBox "終了しました"
Application.DisplayFullScreen = False
Sheets("目次").Select
End Sub
Private Sub UserForm_Initialize()
With UserForm1
CommandButton1.Caption = "A級"
CommandButton2.Caption = "B級"
CommandButton3.Caption = "×"
End With
With UserForm1
.StartUpPosition = False
.Top = 400
.Left = 650
End With
End Sub
Private Sub CommandButton1_Click()
Dim myTag As String
myTag = CommandButton1.Caption
Sheets("データー").Select
Range("C65536").End(xlUp).Offset(1, 0).Select
Selection.Value = myTag
UserForm1.Hide
End Sub
Private Sub CommandButton2 、3は省略
|
|