[[20101009184213]] 『エクセルが固まる』(koko) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルが固まる』(koko)

thisworkbookモジュールに下記のコードがあります。

 印刷時に、ブック「a」の"Sheet1"のデータを
 ブック「b」の"Sheet2"に書き込むのが目的です。
 実行させると、データは書きこまれるですが、

 ブック「b」がパソコンのモニターに表示されている状態で固まります。
 マウスでセルをクリックしても触れない状態です(リボンは触れます)
 タスクバーでブック「a」のタブをクリックするとタブ自体は選択できるのですが
 モニターはブック「b」のままです。

 ブック「b」の×ボタンで終了させると「a」も「b」も終了してしまいます。
 これは一体??
 どのように直せばいいのかご教示宜しくお願い致します。
 OSはXP エクセル2007です

 Private Sub workbook_beforeprint(cancel As Boolean)
 Dim myRow As Long
 Dim flg As Boolean
 Dim tempbook As Workbook

 If ActiveSheet.Name <> "Sheet1" Then Exit Sub

 For Each tempbook In Workbooks
    If LCase(tempbook.Name) = LCase("b.xlsx") Then
      flg = True
    End If
 Next

 If flg = True Then
        With Workbooks("b.xlsx").Worksheets("Sheet2")
            myRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(myRow, 1).Value = Worksheets("Sheet1").Range("a1").Value
            .Cells(myRow, 2).Value = Worksheets("Sheet1").Range("a2").Value
            .Cells(myRow, 3).Value = Now()
        End With
 Else

   Workbooks.Open Filename:="C:\Documents and Settings\koko\デスクトップ\b.xlsx"

        With Workbooks("b.xlsx").Worksheets("Sheet2")
            myRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(myRow, 1).Value = Worksheets("Sheet1").Range("a1").Value
            .Cells(myRow, 2).Value = Worksheets("Sheet1").Range("a2").Value
            .Cells(myRow, 3).Value = Now()
        End With

 End If
 End Sub


 ブレークポイントを設定、ステップ実行してどのステートメントの
時点でそのような状態になるか確認してください。
(みやほりん)

 こんにちは
 .Cells(myRow, 1).Value = Worksheets("Sheet1").Range("a1").Value
 等を
 .Cells(myRow, 1).Value = ThisWorkbook.Worksheets("Sheet1").Range("a1").Value
 とすれば良さそうですけど、デスクトップに"b.xlsx"が無いとか、デスクトップのパスが違うPCで実行する場合を考えたら、
 Private Sub Workbook_Beforeprint(Cancel As Boolean)
    Dim myRow As Long
    Dim tempbook As Workbook

    On Error Resume Next
    Set tempbook = Workbooks("b.xlsx")
    If tempbook Is Nothing Then
        Set tempbook = Workbooks.Open(Filename:="C:\Documents and Settings\koko\デスクトップ\b.xlsx")
    End If
    On Error GoTo 0

    If tempbook Is Nothing Then
        MsgBox "b.xlsx が存在しません。"
        Cancel = True
        Exit Sub
    Else
        With tempbook.Worksheets("Sheet2")
            myRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(myRow, 1).Value = ThisWorkbook.Worksheets("Sheet1").Range("A1").Value
            .Cells(myRow, 2).Value = ThisWorkbook.Worksheets("Sheet1").Range("A2").Value
            .Cells(myRow, 3).Value = Now()
        End With
    End If
    Set tempbook = Nothing
End Sub
 のようにエラーを回避するか、"b.xlsx"を指定するコードに変更した方がいいかも。
(ウッシ)

 本日急な仕事で、くるのが遅くなりました。申し訳ありません。

 みやほりんさんへ
 >ブレークポイントを設定、ステップ実行してどのステートメントの
 >時点でそのような状態になるか確認してください。
 大変申し上げにくいのですが、固まらなくなっています。
 昨日は何回テストしても固まっていたのに、今日は固まりません。
 昨日と全く同じコードでテストしたのに
 完璧に???です。
 お手数をおかけして申し訳ありませんでした。

 ウッシさんへ
 どうしてだか、固まるのが直ってしまいましたが、コード有難うございます。
 私の見よう見まねのつぎはぎとはやっぱり違いますね。さすがです。
 勉強させていただきます。
 有難うございました。
 (koko)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.