|
▼ANTON さん:
>Private Sub CommandButton1_Click()
>On Error Resume Next
こんなこと書いてはいけません。
これは、エラーが発生することが分かっていて、
エラー原因によって処理を分岐させたい場合に使うものです。
これが書いてあるせいでデバッグができなくなっています。
>
>Dim Worksheet As String
特別な意味のある単語を勝手に使うと、損をするのは自分自身ですよ。
>Dim MyFileName, MyFileName2 As String
この書き方では、
Dim MyFileName AS Variant, MyFileName2 As String
と書いたのと同じです。
>Dim MyWSName, MyWSName2 As String
>Dim MyWS As Worksheet
>
>MyFileName = Application.GetOpenFilename _
> (Filefilter:="2003Excelファイル(*.xls), *.xls,2007Excelファイル(*.xlsx), *.xlsx", _
> Title:="Excelファイルの読み込み")
>
>If MyFileName = "False" Then Exit Sub
実際に Exit Sub が実行されるか試してみましたか?
>
>Workbooks.Open MyFileName
>
>MsgBox "今開いたExcelファイルのシートの中からコピーするシートを選び、アクティブ状態にしてください。" & vbNewLine & _
> "もしよろしければOKを押してください。", vbExclamation
ユーザーフォームとメッセージボックスを開いた状態で
ワークシートを触らせるなんて無茶です。
メッセージはユーザーフォームのラベルにでも表示して
もう一つのコマンドボタンを押させるとかしましょう。
>
>MyWSName = ActiveSheet.Name
>
>Worksheets(MyWSName).Copy after:=ThisWorkbook.ActiveSheet
>
>MyWSName2 = "AAA"
>
>For Each MyWS In Worksheets
>If MyWSName = MyWSName2 Then
このときそれぞれの変数に何が入っているか
ステップ実行をして確かめましょう。
ブレークポイントを設定しておくと、そこで一時停止します。
変数の上にマウスポインタを持っていくと
変数に格納された値がポップアップで表示されます。
> Application.DisplayAlerts = False
> Worksheets("AAA").Delete
> Applicarion.DisplayAlerts = True
>End If
>Next
>
>ActiveSheet.Name = MyWSName2
>
>If vbYes = MsgBox("今開いたファイルを閉じますか?", vbQuestion + vbYesNo) Then
>Workbooks(MyFileName).Close
>End If
>
>Unload Me
同じ作業を繰り返すなら閉じたり開きなおしたりする必要は無いでしょう。
>
>'次のユーザーフォーム.Show
>
>UserForm1.Show
>
>End Sub
|
|