|
こんにちは。かみちゃん です。
今日、ひさしぶりこのスレッドを見ました。
>なぜか失敗している箇所が少しですが見つかりました。
>何が原因なのでしょう?
[#33562]や[#33874]で提示しているコードを再度ご確認ください。
記述の仕方が違うと思います。違う記述をされて動かない、エラーが出ると言われましても、責任持てません。
どうしても、On Error 〜 を使いたいのならば、
行という変数を先頭で初期化しておけばいいと思います。
つまり、以下のような感じにします。
For x = 1 To シート数
行 = 0 '行番号は、1〜65536であるため0は初期値(ありえない)
On Error Resume Next
行 = Worksheets(1).Cells.Find("シート名", , xlValues, , , xlPrevious).Row
On Error GoTo 0
If 行 > 0 Then '行 = Worksheets(1).Cells.Find〜に成功した場合
Workbooks("ブック.xls").Worksheets(2).Cells(行, 256).End(xlToLeft).Offset(, 1).Value = 時間 '時間
Workbooks("ブック.xls").Worksheets(2).Cells(行, 256).End(xlToLeft).Offset(, 1).Value = 野菜値段 * 魚値段 '金額
Workbooks("ブック.xls").Worksheets(2).Cells(行, 256).End(xlToLeft).Offset(, 1).Value = 持ち金 - 購入金額 'おつり
End If
Next x
なお、ゼロイオンさんがご提示のコードですが、何をしているのか、今ひとつわかりません。
というのは、
・変数xでシート数を繰り返しているが、コード中で使われていない。
繰り返し処理をしているコード中のコードが同じなので無意味な処理と思う。
・Findメソッドで「シート名」という文字列を検索しようとしている
・Workbooks("ブック.xls").〜のコードが3行あるが、これは、右方向に3列書き込むことなのか?
であれば、
Workbooks("ブック.xls").Worksheets(2).Cells(行, 256).End(xlToLeft).Offset(, 1).Resize(, 3).Value = _
Array(時間, 野菜値段 * 魚値段, 持ち金 - 購入金額) '時間
という書き方で1行にまとめることができる
・その他
投稿時に半角カタカナは使わない。できれば、ファイル名にも使わないほうがいいかと思う。
変数名についても、日本語等全角文字は使わないほうがいいかと思う。
コードを提示するときは、VBEで記述したコードをコピー貼り付けすると誤字がなくなる。
(少なくとも、インデントや、for ではなく For と見やすくなる。)
ゼロイオンさんのご提示のコードが失礼ながら不完全なため、動作確認はしていませんのであらかじめご了承ください。
提示されたコードを参考にがんばってコードを自分で書いてみるというのは、とてもいいことなのですが、エラーが出る場合は、エラーメッセージとエラー箇所を正確に提示していただければいいかと思います。
「型があいません、みたいなメッセージ」ではなく、「型が一致しません」というように。
そうすれば、早く解決する糸口になります。
ぜひ御一考ください。
|
|