この人頭いいなと思ったエピソード

Excel VBAでn行毎に行の選択

こんにちわ。
初めて質問をさせて頂きます。
今回ExcelのVBAを使ってあるシートを作成することになったのですが
その過程で分からず、詰まっております。
色々調べてみたもののVBAの知識が浅いせいか
該当する様なものは見つかりませんでした。
実行したいのはタイトルの通りです。
例として10行毎に1行ずつ選択したい場合は下記の通りです。

A列
10行目←選択


20行目←選択


30行目←選択


40行目←選択

実際にやりたいことは行を選択後に入力規則を入れたいだけなのですが
5000行近くあるので、一つ一つコードを書く場合

Range("A10,A20,A30,A40・・・").EntireRow.Select

結構な量になります・・・。
VBAなら他にもっと効率いいことができるのでは、と
自分なりに探してはいますが、どうしても見つからないので
皆様のお知恵をお借りしたいです。

よろしくお願いします。

A 回答 (3件)

色々なやり方があるでしょうが一例です。



Sub Macro1()
Dim i As Long
Dim r As Range
Set r = Cells(10, 1)
For i = 20 To 5000 Step 10
Set r = Union(r, Cells(i, 1))
Next i
r.EntireRow.Select
End Sub
    • good
    • 5
この回答へのお礼

まさに考えてた通りの動作で感激です。

一つ一つの構文がどう動くか早速色々調べてみたいと思います

ありがとうございました

お礼日時:2010/07/03 15:42

#2です。



すみません。さきほどの例示コード、
入力規則の内容もですが、行の範囲も適当にアレンジしてください。

とりあえず仮で、
Range(Cells(r,1),Cells(r,10))
としておりますので。
(A~J列)
    • good
    • 1

一気に選択してやろうとしているのでしょうか。


じゃなくて、一行づつ入力規則を入れて、それを繰り返せばいいです。


Sub AAA()

Dim r As Integer
Dim Rng As Range

For r = 10 To 5000 Step 10
   Set Rng = Range(Cells(r, 1), Cells(r, 10))

   With Rng.Validation
   .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
  Operator:=xlBetween, Formula1:="10", Formula2:="100"
  .IgnoreBlank = True
  .InCellDropdown = True
  .InputTitle = ""
  .ErrorTitle = ""
  .InputMessage = ""
  .ErrorMessage = ""
  .IMEMode = xlIMEModeNoControl
  .ShowInput = True
  .ShowError = True
 End With
Next r

Set Rng=Nothing
End Sub

※入力規則の内容によって、適当にアレンジください。
マクロの自動記録で見てもいいですけどね。

http://www.moug.net/tech/exvba/0050121.htm

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
↑上から3つめの項目。
    • good
    • 0
この回答へのお礼

丁寧にありがとうございます

1行ずつ入力規則を入れることは

思いつきませんでした・・・。

思いついても構文が全くわかりませんでしたが^^;

VBAの奥深さには驚かされました

今回提示して下さった構文も一つ一つ理解行きたいと思います。

ありがとうございました!

お礼日時:2010/07/03 15:46

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

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


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