プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります。
VBA初心者で、ネットで得た知識を利用し、ソースを書いています。

ワークシート関数の【workday】をVBAで使用したいのですが、うまく行きません。(関数を使用し、平日分のみ日付データを取得したいです)


worksheets("元データ").range('A11') =Evaluate(workday(A10,1,B1:B50))


手直し、アドバイス、また使い勝手の良い関数などありましたら、お願いします。

質問者からの補足コメント

  • A10セル   月の頭を挿入
    B1:B50セル  祭日を取得(全てシリアル値に変換してます)

      補足日時:2020/07/14 16:26

A 回答 (2件)

こんにちは



>ワークシート関数の【workday】をVBAで使用したいのですが~~
方法は二通り考えられます。
直接利用するのであれば、VBAからはWorksheetFunctionオブジェクトのメソッドとして利用できます。
(全てのシート関数が利用できるとは限りませんが、かなりのものが可能です)
https://docs.microsoft.com/ja-jp/office/vba/api/ …

ですので、
 WorksheetFunction.WorkDay(Range("A10").Value, ・・・)
のような形式になります。(引数には値を渡すことにご注意)
https://docs.microsoft.com/ja-jp/office/vba/api/ …


よくわからない場合は、別の方法を・・・
どこかの空セルに、計算したい関数を設定します。
すると、エクセルが計算してくれますので、そのセルの値を読み込めば計算結果を得ることができます。
  Cells(~~).FormulaLocal = "=Workday(A10, 1, B1:B50)"
result = Cells(~~).Value
痕跡を残したくない場合は、利用したセルを消しておけば良いです。
  Cells(~~).Clear
    • good
    • 0
この回答へのお礼

早々にありがとうございます!

1、worksheetfunction使ってみましたが、やはりエラー出てしまいました、、難しいものです…

2,セルに関数を入力する方法もあるんですね。知りませんでした!実際に活用出来ました!

お礼日時:2020/07/15 20:26

以下の通りです。


カッコの半角・全角。ダブルクォーテーション・シングルクォーテーション等、注意した方が良いですよ!!

誤)
worksheets("元データ").range('A11') =Evaluate(workday(A10,1,B1:B50))

正)
Worksheets("元データ").Range("A11") = Evaluate("workday(A10,1,B1:B50)")
    • good
    • 0
この回答へのお礼

ありがとうございます!

コード自体は、適正だったのですね。
ただ仰るとおりに記述しましたが、エラーになってしまいます。。

お礼日時:2020/07/15 20:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!