[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力規則を繰り返したい』(りこ)
こんにちは。入力規則を23行おきに200回繰り返したいので、ネットやVBA辞典を参考に、コードをそれぞれ書いてみましたが、どうやって繋げればいいのかわかりません。
【入力規則】
Sub 入力規則1()
Range("D4").Select With Selection.Validation .Delete .Add Type:=xlValidateList, _ Formula1:="=Sheet2!$A$2:$A$11" End With End Sub
【繰り返す】
Sub 繰り返し()
Dim i as integer
For i = 4 To 4000 Step 23 ’23行ごとに繰り返します。
Range ("Di") Next i
上の2つのコードをまとめたいです。
また、最終的には23行分の入力規則を200回繰り返すコードを作りたいです。
*入力規則の設定はD4からD26まで、Sheet2のA2:A5〜W2:W11を参照します。
これを下の方向に200回繰り返します。参照先のSheet2の最終行はA列からW列までばらばらです。
【入力規則】
Range("D4").Select With Selection.Validation .Delete .Add Type:=xlValidateList, _ Formula1:="=Sheet2!$A$2:$A$5" End With Range("D5").Select With Selection.Validation .Delete .Add Type:=xlValidateList, _ Formula1:="=Sheet2!$B$2:$B$6" End With Range("D6").Select With Selection.Validation .Delete .Add Type:=xlValidateList, _ Formula1:="=Sheet2!$C$2:$C$10" End With
−中略
Range("D26").Select With Selection.Validation .Delete .Add Type:=xlValidateList, _ Formula1:="=Sheet2!$W$2:$W$11" End With
【繰り返す】
Sub 繰り返し()
Dim i as integer
For i = 4 To 4000 Step 23 ’23行ごとに繰り返します。
Range ("Di") Next i For j = 5 To 4000 Step 23 ’23行ごとに繰り返します。 Range ("Dj") Next j For k = 6 To 4000 Step 23 ’23行ごとに繰り返します。 Range ("Dk") Next k ー中略 For ae = 26 To 4000 Step 23 ’23行ごとに繰り返します。 Range ("Dae") Next ae
分かりにくい説明で申し訳ありません。
ご教授お願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
この入力規則を設定しなければいけないシートのレイアウトというか、逆、なぜ、このような入力規則が必要になるかという そのレイアウト要件がピンとこないのですが、さておき。
条件のリストで与える範囲の行数が一定ではなく、かといって増加分が一定ということでもないですね。 与えるリスト範囲の条件を教えていただけませんか?
(β) 2016/10/30(日) 16:34
こんにちわ。
ループの部分はD4:D26を下に丸ごとコピペでは問題あるんですか?
後リスト範囲はそれぞれのデータのある最終行までですか? 以下のような感じかな? 200回繰り返すなら最終行は4626じゃないですか?
Sub test() Dim i As Integer Dim ads As String
For i = 4 To 26 With Sheets("Sheet2") ads = "=" & .Range(.Cells(2, i - 3), .Cells(Rows.Count, i - 3).End(xlUp)).Address(External:=True) End With With Range("D" & i).Validation .Delete .Add Type:=xlValidateList, Formula1:=ads End With Next i Range("D4:D26").Copy Range("D27:D4626")
End Sub
コード修正(18:49)
(sy) 2016/10/30(日) 16:54
>>後リスト範囲はそれぞれのデータのある最終行までですか?
あぁ、なるほど。そうかも。 だから規則性がなかったんですね。
(β) 2016/10/30(日) 18:08
結局、23行分の入力規則を手作業で設定し、syさんにアドバイスいただいたコピペをアレンジしました。
*syさんのご指摘通り、4626行でした。
Range("G4:G26").Copy
Range("G27:G4626").PasteSpecial Paste:=xlPasteValidation
本当に助かりました。ありがとうございました。
(りこ) 2016/11/06(日) 17:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.