Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
WorksheetFunction.NetworkDays_Intlにつきまして
投稿日時: 19/05/13 04:17:32
投稿者: miso
メールを送信

NetworkDays_Intlの祝日範囲を名前指定したエリア名を入れることはできないのでしょうか?
「WorksheetFunction.NetworkDays_Intl」の行でこのオブジェクトはプロパティまたはメソッドをサポートしていません」とエラーがでてしまいます。
 

Sub LeadTime()
Dim holiday As Variant
Dim holi_E As Long

    holi_E = Worksheets("祝日").Cells(Rows.Count, 1).End(xlUp).Row
    holiday = Worksheets("祝日").Range("A2:A" & holi_E)

Dim myRow As Long
Dim i As Long

    myRow = Cells(Rows.Count, 1).End(xlUp).Row
     Dim owariData As Variant
        ReDim owariData(myRow, 0)
            For i = 2 To myRow
                owariData(i - 2, 0) = Format(Cells(i, "K"), "yyyy/mm/dd")
        Next i
    Worksheets("List").Range("Q2:Q" & myRow) = owariData

        ReDim myData(myRow, 0)
        For i = 2 To myRow
                myData(i - 2, 0) = WorksheetFunction.NetworkDays_Intl(Cells(i, "I"), Cells(i, "q"), holiday)
        Next i
    Worksheets("List").Range("P2:P" & myRow) = myData
    
    Erase myData
    Erase owariData
End Sub

回答
投稿日時: 19/05/13 07:53:16
投稿者: 半平太

> myData(i - 2, 0) = ・・.NetworkDays_Intl(Cells(i, "I"), Cells(i, "q"), holiday)
holidayは第4引数ですよ。
 
当該エリア名が「祝日一覧」だとした場合」
>holi_E = Worksheets("祝日").Cells(Rows.Count, 1).End(xlUp).Row
>holiday = Worksheets("祝日").Range("A2:A" & holi_E)
   ↓
holiday = Application.Range("祝日一覧")

投稿日時: 19/05/13 09:38:54
投稿者: miso
メールを送信

半平太さん、早速のご返答ありがとうございます!
また第4引数のご指摘ありがとうございました。以下に変えたら表示されるようになりました。

myData(i - 2, 0) = WorksheetFunction.NetworkDays_Intl(Cells(i, "I"), Cells(i, "q"), , holiday)

 
できれば捕捉頂きました「祝日一覧だとした場合」のところが理解できず教えて欲しいです。
私が書いた2行はApplication.Rangeでsetとして使用した方がよいということでしょうか?
それとも名前の定義で入れてApplication.Rangeを使用した方が一般的ということなのでしょうか?

回答
投稿日時: 19/05/13 10:24:10
投稿者: 半平太

>それとも名前の定義で入れてApplication.Rangeを使用した方が一般的ということなのでしょうか?
 
いえ、これがメインの質問だと解釈したので、その名前を使った例にしたまでです。
    ↓
>NetworkDays_Intlの祝日範囲を名前指定したエリア名を入れることはできないのでしょうか?
 
因みに、Rangeオブジェクトでも、配列でも、問題ないです。

投稿日時: 19/05/13 12:05:30
投稿者: miso
メールを送信

半平太さん、いつもご返答ありがとうございます。
失礼致しました、読み違いでした。また、わかりにくい書き方で申し訳ございませんでした。
 
ありがとうございます、rangeオブジェクトをもう少し勉強してみます。