ExcelVBA初心者です。
コードを教えて下さい。
ワークシートのイベントを使わずに下記のコードを書きたいです。
日付セル(W1、X1、、、) 4/1 から3/31まで入力済
開始日セル(E15)
終了日セル(F15)
%(J15)
開始日から終了日まで、土日祝日、会社の休業日を除いたセルに、
"1"を入力するコードを教えて下さい。
(別シートに土日祝日と、会社の休業日を入力したシートを作成します、A1からA列最終行まで設定したい)
シート名→"休日"
開始日と終了日が空白でなかったら、
1を入力するマクロです。
行は追加されていくので、ループの方法もわかると助かります。
また、J列が、100%でないときは、"手入力してください"と、メッセージを出して終了させます。
どうぞよろしくお願いいたします。
No.1
- 回答日時:
「ワークシートのイベントを使わずに・・・」ということは、手動でマクロを実行したいのですよね?しかし、補足コメントには「開始日と終了日が、変更されたら・・・」と書いてあります。
う~ん。どうしたものでしょうね。個人的には数式が良いような気がするのですが、raja-rajaのお好みではないですよね。
ご連絡ありがとうございます。
開始日と終了日が空白でなければ、1を入力するというマクロを作成したいです。
変更されたら。。。はイベントになりますよね。
申し訳ありません。
No.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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルに特定の色が出た時だけ、式を発動させたい 4 2022/06/17 10:32
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) エクセルシートの合計の変動 5 2022/04/05 15:56
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
はがきについて。
-
エクセル 文字を増やしたい。
-
セルの内容表示が邪魔になる
-
Microsoft365に変えたのですが...
-
エクセルの計算
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
Excel ピボットテーブルで日付...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報
開始日と終了日が、変更されたら、変更された行だけ、1を入力するコードもよろしくお願いいたします。
ご連絡ありがとうございます。
すみません。
開始日と終了日が空白でなかったら、1を入力したいです。
マクロボタンでセットします。
変更されたら、、、は、イベントでないと、
出来ないですよね。
申し訳ありません。