[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ バグ』(km)
いつもお世話になっています
macエクセルで 下記コードを実行したところ バグが起きました
ウインドウズ ヴィスタでは動くのですが どなたか教えて頂けますか
(また 同じ ウインドウズでも動いていたのに急に同じ所でバグをしています エクセル2010)
Sub 転記()
Dim sht As String
Dim tbl, ky, dic As Object, i As Long, j As Integer
tbl = Workbooks("注残").Sheets("bo").Range("a4").CurrentRegion.Offset(, 1).Resize(, 11).Value
Set dic = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tbl, 1)
ky = "" For j = 1 To 11 ky = ky & "_" & tbl(i, j) Next ky = Mid(ky, 2) dic(ky) = Empty Next With Workbooks("order sheet").Sheets("入力")
If MsgBox("転記しますか?", vbYesNo + vbQuestion, "確認") = vbYes Then ky = "" For j = 1 To 11 ky = ky & "_" & .Cells(2, j).Value Next ky = Mid(ky, 2) If dic.exists(ky) Then
End If Workbooks("order sheet").Worksheets("入力").Range("b7").CurrentRegion.Copy _ Workbooks("発注").Worksheets("sheet1").Cells(Rows.Count, 3).End(xlUp).Offset(3, -2) .Range("c5:d5").Copy Workbooks("注残").Sheets("bo").Cells(Rows.Count, 5).End(xlUp).Offset(1, -4) .Range("b7:h100").Resize(, 7).Copy Workbooks("注残").Sheets("bo").Cells(Rows.Count, 5).End(xlUp).Offset(1, -2)
End If
End With
Range("b5:h5").ClearContents Range("b7:h1000").ClearContents Range("b5").Select End Sub
上記コードの
tbl = Workbooks("注残").Sheets("bo").Range("a4").CurrentRegion.Offset(, 1).Resize(, 11).Value
この部分でバグします
宜しくお願い致します
< 使用 Excel:Excel2008(Mac)、使用 OS:MacOSX >
プログラムって、扱うデータによって、正常に作動したり、エラーが発生したりしますよね!!
新規ブックにて
標準モジュールに
Sub test1() Dim tbl Cells.Clear tbl = Workbooks("book1").Sheets("sheet1").Range("a4").CurrentRegion.Offset(, 1).Resize(, 11).Value
End Sub Sub test2() Dim tbl Cells.Clear Range("4:4").Value = " " tbl = Workbooks("book1").Sheets("sheet1").Range("a4").CurrentRegion.Offset(, 1).Resize(, 11).Value
End Sub
test1では、エラーは発生しませんが、test2では、見た目は変わらないSheet1で今度は、エラーが発生します。
扱っているデータ(対象シート)に想定していないデータが含まれていませんか?
(ichinose) 2015/02/05(木) 07:12
デバッグの状態で インデックスが有効範囲にありませんとでますが
上記のように 他のPCでは動きます
想定していないデーターも含まれていないと思っています (km)
(km) 2015/02/05(木) 07:37
Sub チェック() Dim WB As Workbook Dim WS As Worksheet Dim r As Range Dim tbl Set WB = Workbooks("注残") Set WS = WB.Sheets("bo") Set r = Range("a4") tbl = r.CurrentRegion.Offset(, 1).Resize(, 11).Value End Sub これを実行して、どこでインデックスがないって言われるか確認してみてください。 (稲葉) 2015/02/05(木) 08:43
Book1 ですが、本当の名前は Book1.xlsx (あるいは Book1.xlsm)ですよね。 なのに、ファイル拡張子を除いても扱える場合もあるし、エラーになる場合もある。 これは、バージョンの違いではなく、それぞれのPCのフォルダに対する設定が異なるからです。
フォルダをエクスプローラで見たときに、ファイルの名前に .xlsx 等がついていたり、ついていなかったり PCによってまちまちでしょ?
エクスプロラのフォルダオプションで「登録されている拡張子は表示しない」にチェックすると、 .xlsx などが一覧から消え、チェックをはずすと、一覧が .xlsx 等付になります。
で、エラーが起こったPCでは、このチェックがついていないでしょ?
いずれにしても、VBAコードでは、ブック名を記述する場合は、必ず、拡張子も明示しましょう。 そうしておけば、どんな設定のPCでも、問題なく稼働します。
(β) 2015/02/05(木) 08:49
Oh... 自分でチェック用の作ってて気付かなかった・・・ たぶんそれですね。
(稲葉) 2015/02/05(木) 08:53
参考 (稲葉) 2015/02/05(木) 09:01
余談ですが。
個人的には、この【登録されている拡張子は表示しない】という表現(というか、機能)はすきじゃないですね。 【登録されている拡張子も表示する】のほうが、直感的に理解しやすいと思ったりします。
で、2013では、エクスプローラ画面にタブがあり、その中に表示タブもあって、そこでの 表現は【ファイル名拡張子】となっています。ここにチェックをつければ表示され、チェックをはずすと 表示されない。きわめてまともな表現になってます。
ただ、2013でも、フォルダオプション内の表現は従来通りです。 チェックをつける場所によって、チェックの意味が異なるのは困りものですね。
(β) 2015/02/05(木) 09:15
余談2ですが、 >バグが起きました という表現は違和感を感じました。
バグとエラーを混同しているのだと思いますが、バグはプログラムのコードや論理上の 欠陥をさすので、エラーが起きるとは言いますが、バグが起きるとは聞かないので。
エラーは現象ですが、バグはプログラマの不名誉ですw。 http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%B0 (Mook) 2015/02/05(木) 09:54
つまり、今回は「エラーが起きる」、「バグコード」だったわけですね!
タイトルは間違っていない!! (稲葉) 2015/02/05(木) 10:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.