|
>でも、On Error GoTo 〜 のこの使い方はわかるんですけど、On Error GoTo〜 や、On Error Resume Next の記述がない場合(その作り方が問題ですよね)、「なんでそんな所に飛ぶの?」というような場所(他のモジュールとか)に飛んでる場合があって、すごく不可解なのです。
なんて応対したらいいのか解んないけど、
私は、On Error GoTo 〜の方が使いづらいです。
使わないので今一解ってませんが、飛ばされた後、Resume使って同じ位置の戻らないとエラーがクリアできないから...。
On Error Resume Next だと、エラーフラグというがエラーナンバーをクリアするだけで済みます。
Sub aaaa()
On Error Resume Next
Sheets("Sheet200").Select
If Err Then
If MsgBox("シートがありません。" & vbLf & _
"作りますか?", vbYesNo, vbQuestion) = vbYes Then
Err.Clear
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "ああああ"
Else
MsgBox "中止"
Exit Sub
End If
End If
End Sub
それと、更新日ですが97以上ならファイルプロパティから取れました。
こちらはファイルが開いてないとダメですが。
Sub 最終更新日()
Dim OPWB As Workbook, BDP As Object, FNm As String
'FNm = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\pprprp.xls"
'FNm = "pprprp.xls"
FNm = Application.GetOpenFilename("Excelファイル (*.xls), *.xls")
If FNm = "False" Then Exit Sub
Application.ScreenUpdating = False
On Error Resume Next
'Set OPWB = Workbooks.Open(FNm)
Set OPWB = Workbooks(FNm)
For Each BDP In OPWB.BuiltinDocumentProperties
'i = i + 1
'ThisWorkbook.Sheets(1).Range("A" & i).Value = BDP.Name
'ThisWorkbook.Sheets(1).Range("B" & i).Value = OPWB.BuiltinDocumentProperties(BDP.Name).Value
'Last save time
If BDP.Name = "Last save time" Then
'Win98se & EXL97だとエラーになっていた?。
'Win2000 & EXL97だとEmpty
'EXL2000以上じゃないとダメ?
TTM = OPWB.BuiltinDocumentProperties(BDP.Name).Value
MsgBox "最終更新日、つまり最終保存日" & TTM
Exit For
End If
Next
OPWB.Close (False)
Set OPBW = Nothing
Application.ScreenUpdating = True
End Sub
|
|