12万作品が月額500円(税別)で見放題なのはdTVだけ!! >>dTV(外部リンク)

ExcelVBA初心者です。
コードを教えて下さい。
ワークシートのイベントを使わずに下記のコードを書きたいです。

日付セル(W1、X1、、、) 4/1 から3/31まで入力済

開始日セル(E15)
終了日セル(F15)
%(J15)


開始日から終了日まで、土日祝日、会社の休業日を除いたセルに、
"1"を入力するコードを教えて下さい。
(別シートに土日祝日と、会社の休業日を入力したシートを作成します、A1からA列最終行まで設定したい)
シート名→"休日"

開始日と終了日が空白でなかったら、
1を入力するマクロです。
行は追加されていくので、ループの方法もわかると助かります。

また、J列が、100%でないときは、"手入力してください"と、メッセージを出して終了させます。

どうぞよろしくお願いいたします。

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

  • 開始日と終了日が、変更されたら、変更された行だけ、1を入力するコードもよろしくお願いいたします。

      補足日時:2018/06/15 04:22
  • ご連絡ありがとうございます。

    すみません。
    開始日と終了日が空白でなかったら、1を入力したいです。
    マクロボタンでセットします。

    変更されたら、、、は、イベントでないと、
    出来ないですよね。

    申し訳ありません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/06/17 10:25

A 回答 (2件)

「VBA、かつ、イベントを使わない」を優先して考えてみました。

ユーザ定義関数です。でも、これくらいなら、標準関数の組み合わせでもできますよね。

下記のVBAコードを標準モジュールに張り付けてから、C2セルに次の数式を入力し、横縦ににオートフィルでコピーしてください。セルの位置関係は添付画像を参照してください。「休日」シートはA列に土日祝および会社の休業日が入力されている前提です。

【C2セル】=mykinmu($A2,$B2,C$1,休日!$A:$A)

Function myKinmu(s As Range, e As Range, t As Range, d As Range) As Variant
myKinmu = ""
If s = "" Or e = "" Or WorksheetFunction.CountIf(d, t) > 0 Then Exit Function
If t >= s And t <= e Then
myKinmu = 1
End If
End Function
「ExcelVBAコードを教えて下さい。」の回答画像2
    • good
    • 0
この回答へのお礼

ママチャリさま

ありがとうございます。
出来ました!

お礼日時:2018/06/17 16:36

「ワークシートのイベントを使わずに・・・」ということは、手動でマクロを実行したいのですよね?しかし、補足コメントには「開始日と終了日が、変更されたら・・・」と書いてあります。

う~ん。どうしたものでしょうね。
個人的には数式が良いような気がするのですが、raja-rajaのお好みではないですよね。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。

開始日と終了日が空白でなければ、1を入力するというマクロを作成したいです。
変更されたら。。。はイベントになりますよね。
申し訳ありません。

お礼日時:2018/06/17 12:06

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング