[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エクセルが固まる』(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.