[[20150205060252]] 『マクロ バグ』(km) ページの最後に飛ぶ

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

 

『マクロ バグ』(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


ichinoseさん 早速の回答ありがとうございます

デバッグの状態で インデックスが有効範囲にありませんとでますが
上記のように 他の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


http://officetanaka.net/excel/vba/file/file03.htm
 参考
(稲葉) 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

みなさん ありがとうございました (km)
(km) 2015/02/05(木) 10:56

コメント返信:

[ 一覧(最新更新順) ]


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