[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで稼働日を考慮して日程を自動入力』(hana)
日程作成をマクロで行いたいと思っています。
(エクセル2003です)
A B C D
1│工程A│工程B│工程C│工程D│
−−−−−−−−−−−−−−−
2│ │ │ │ │
というシート1があり、シートに下記のようなカレンダーがあります。
A B
1│10/13│稼動
2│10/14│休日
3│10/15│稼動
4│10/16│稼動
5│10/17│休日
6│10/18│休日
7│10/19│休日
8│10/20│稼動
工程Dの日付を任意で入力し、マクロを実行すると工程A〜Cの日付を各後工程
(工程Aなら工程B)の−1稼働日休日を自動で入力されるようにしたいです。
例えば工程Dに10/20を入力すると、
工程Cは10/16、工程Bは10/15、工程Aは10/13です。
マクロは使ったことが無かったので、
WEB等で検索し無理矢理途中まで書いてみましたが
休日が2日以上続く場合にどう書くか悩んでしまいました。
(おそらくLOOPとかを使う?と思ったのですが・・・)
下記、途中まで考えたマクロです。
Sub 日程作成()
Dim 工程Dの日 as Date
Dim 工程Dの日-1日 as Date
Dim 工程Dの日-1日の稼働日判定 as String
工程Dの日 = Range("D22)
工程Dの日の-1日 = Range("D22")-1
工程Dの日-1日の稼働日判定 =Application Worksheet Function.VLookUP(工程Dの日-1日,Worksheet("カレンダー").Range("A1:B8"),2,0)
If 工程Dの日-1日の稼働日判定="稼動"
Range("C2").Value = 工程Dの日-1日
Else
ここまで書いてみましたが・・・。
上記も慣れている方からしたら意味不明かもしれません。
すみませんが、是非知恵をお貸しください。
いくつか注意点ですが、変数に「-」は使えません。
もしコードの作成をテキストエディタで行っているのであれば、
VBE を使用したほうが良いと思います。
文法的な間違い(.の抜け、" の不整合など)は、かなりそこで減らすことが
できます。
で、本論ですが、
・説明に使用されている表とコード状のセルの位置が一致しません。
・シート名は「カレンダー」と「シート1」でしょうか。
・工程は必ずA〜Dで、入力されるのは工程Dだけなのでしょうか。
また、
・入力された工程Dは必ずカレンダー上で稼働日であり、
・カレンダーには工程Aまでの日程が必ずあると保障されている
という前提でかんがえてよいのですか?
(Mook)
カレンダーを「稼働日のみのカレンダー(休日は不要)」 にできれば簡単になると思いますが。(NB)
シート2
A B
1│10/13│稼動
2│10/15│稼動
3│10/16│稼動
4│10/20│稼動
Sub 日程作成()
Range("A2:C2").FormulaR1C1 = "=INDEX(Sheet2!R1C1:R300C1,MATCH(RC[1],Sheet2!R1C1:R300C1,0)-1)"
End Sub
(NB)
削除されていたので、復元(kazu)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.