- 締切済み
VbAで範囲内の値を制限したいです
vbaでシフトを自動作成するプログラム作ってるのですが、たまに夜勤が6回になってしまいます(本来は5回にしたい) なので、仮にA1:A10までの範囲で夜勤という文字があったら5個になるまで他の文字に入れ替える(日勤や休みなど)方法教えて欲しいです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
回答No.2
VBAでこの業務をやっている、とのことですが、全貌が説明されていません。 >「シフトを自動作成する」の分野では、VBAは大げさな(得意分野でない)気がします。 特に人員の組合せをプログラムでやるのは(そういう質問もたまに出た)。 >範囲内の値を制限 だけなら、データー入力規則ーユーザー設定ー(エクセルワークシート関数を用いて) A列の例とする、A1:A20などを範囲指定しておいて、A1がアクチブにして、 =COUNTIF($A$1:A1,A1)<6 で5個まで許容、6個目の入力時に注意喚起できます。 6個目以後の夜勤以外の別の項目設定も人間の判断でないと、選択・決定は複雑化するように思う。 この程度で我慢したらどうですか? この部分の機能だけをVBA化するのは簡単ですが。
- kkkkkm
- ベストアンサー率66% (1719/2589)
回答No.1
Sub test() Dim mRng As Range Dim mCount As Long: mCount = 0 For Each mRng In Range("A1:A10") If mRng.Value = "夜勤" Then mCount = mCount + 1 If mCount > 5 Then mRng.Value = "日勤" End If End If Next End Sub