過去ログ

                                Page      66
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼Cellsを使って範囲選択する方法は?  こうき 02/9/10(火) 21:32
   ┗Re:Cellsを使って範囲選択する方法は?  りん 02/9/10(火) 21:50
      ┣Re:Cellsを使って範囲選択する方法は?  こうき 02/9/10(火) 22:12
      ┗Re:Cellsを使って範囲選択する方法は?  こうき 02/9/10(火) 22:31
         ┣Re:Cellsを使って範囲選択する方法は?  りん 02/9/11(水) 9:56
         ┃  ┗Re:Cellsを使って範囲選択する方法は?  つん 02/9/11(水) 10:12
         ┗Re:Cellsを使って範囲選択する方法は?  つん 02/9/11(水) 10:09
            ┗Re:Cellsを使って範囲選択する方法は?  こうき 02/9/11(水) 20:15

 ───────────────────────────────────────
 ■題名 : Cellsを使って範囲選択する方法は?
 ■名前 : こうき
 ■日付 : 02/9/10(火) 21:32
 -------------------------------------------------------------------------
   こんばんは。
いきなりなんですが、
Rangeで範囲選択するように、Cellsでも範囲選択できるのでしょうか?
たとえば、
 Range("A1:B10,D1:E10")の形をCellsで表そうとしたら、
 どう記述したらよいのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:Cellsを使って範囲選択する方法は?  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 02/9/10(火) 21:50  -------------------------------------------------------------------------
   こうきさん、こんばんわ。

> Range("A1:B10,D1:E10")の形をCellsで表そうとしたら、
> どう記述したらよいのでしょうか?

Application.Unionで複数範囲をくっつけます。

Sub test()
  With ActiveSheet
   Application.Union(.Range(.Cells(1, 1), .Cells(10, 2)), _
            .Range(.Cells(1, 4), .Cells(10, 5))).Select
  End With
End Sub


変数に入れて、範囲をくっつけていく(ループ可能)ならこんな感じ。
Sub test2()
  Dim r1 as Range
  With ActiveSheet
   Set r1 = .Range(.Cells(1, 1), .Cells(10, 2))
   '範囲追加
   Set r1 = Application.Union(r1, .Range(.Cells(1, 4), .Cells(10, 5)))
  End With
  '選択
  r1.Select
  Set r1 = Nothing
End Sub
 ───────────────────────────────────────  ■題名 : Re:Cellsを使って範囲選択する方法は?  ■名前 : こうき  ■日付 : 02/9/10(火) 22:12  -------------------------------------------------------------------------
   りん さん、こんばんわ。

>Application.Unionで複数範囲をくっつけます。
>
>Sub test()
>  With ActiveSheet
>   Application.Union(.Range(.Cells(1, 1), .Cells(10, 2)), _
>            .Range(.Cells(1, 4), .Cells(10, 5))).Select
>  End With
>End Sub

ありがとうございます!
うまくいきました。

>変数に入れて、範囲をくっつけていく(ループ可能)ならこんな感じ。
>Sub test2()
>  Dim r1 as Range
>  With ActiveSheet
>   Set r1 = .Range(.Cells(1, 1), .Cells(10, 2))
>   '範囲追加
>   Set r1 = Application.Union(r1, .Range(.Cells(1, 4), .Cells(10, 5)))
>  End With
>  '選択
>  r1.Select
>  Set r1 = Nothing
>End Sub

こんなこともできるんですね。ぜひ参考にさせていただきます。
 ───────────────────────────────────────  ■題名 : Re:Cellsを使って範囲選択する方法は?  ■名前 : こうき  ■日付 : 02/9/10(火) 22:31  -------------------------------------------------------------------------
   りん さん、こんばんわ。
たびたびすみません。
さきほどの記述を使って、
Dim ran as Range
 Dim r as Integer
 With Sheets("data")
  ran = Application.Union(.Range(.Cells(.Range(r - 99, 1), _
    .Range(r + 10, 1)).Cells(.Range(r - 99, 3),.Range(r + 10, 6))))
 End With
とすると、Unionのところが青くなって、
  "引数は省略できません"
というメッセージが出てきます。
何がいけないのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:Cellsを使って範囲選択する方法は?  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 02/9/11(水) 9:56  -------------------------------------------------------------------------
   こうきさん、おはようございます。

> Dim ran as Range
> Dim r as Integer
> With Sheets("data")
>  ran = Application.Union(.Range(.Cells(.Range(r - 99, 1), _
>    .Range(r + 10, 1)).Cells(.Range(r - 99, 3),.Range(r + 10, 6))))
> End With

>とすると、Unionのところが青くなって、
>  "引数は省略できません"
 Unionは2つ以上の範囲をくっつけるので、Rangeが1つしかないとみなされているからです。あと、SetしていないのとRangeの書式が間違えているので、エラーになります。

rをどこで設定しているのかわかりませんが、取得したいのはこういう範囲でしょうか?
Set ran = Application.Union(.Range(.Cells(r - 99, 1), .Cells(r - 99, 3)),_
     .Range(.(Cells(r + 10, 1), .Cells(r + 10, 6))

それともこっちかな?
Set ran = Application.Union(.Range(.Cells(r - 99, 1), .Cells(r + 10, 1)),_
     .Range(.Cells(r - 99, 3), .Cells(r + 10, 6))

CellsとRangeの範囲指定の仕方はヘルプを見て確認してください。
 ───────────────────────────────────────  ■題名 : Re:Cellsを使って範囲選択する方法は?  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/11(水) 10:12  -------------------------------------------------------------------------
   りん さん、おはようございます。

すんません・・・りんさんへの質問にでしゃばってしまいました。
しかも、かぶった(>_<)
私も、Union使ったことないので、りんさんの回答で勉強させていただきました♪
 ───────────────────────────────────────  ■題名 : Re:Cellsを使って範囲選択する方法は?  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/9/11(水) 10:09  -------------------------------------------------------------------------
   こうき さん、おはようございんます。
りんさん、横からすみません。

> Dim ran as Range
> Dim r as Integer
> With Sheets("data")
>  ran = Application.Union(.Range(.Cells(.Range(r - 99, 1), _
>    .Range(r + 10, 1)).Cells(.Range(r - 99, 3),.Range(r + 10, 6))))
> End With
>とすると、Unionのところが青くなって、
>  "引数は省略できません"

引数の、RangeとCellsがごっちゃになって混乱してませんか?

引数の一つは、基本的に↓この形だと思うので、
Range(cells(1,1),cells(1,2))

Application.Union(Range(cells(1,1),cells(1,2)),Range(cells(2,1),cells(2,2))

こんな形になりますよね?
ということで、
こんな感じでどうでしょうか
'==============================================
Sub test()

 Dim ran As Range
 Dim r As Integer
 
 r = 110
 
 With Sheets("data")
  Set ran = Application.Union(.Range(.Cells(r - 99, 1), _
    .Cells(r + 10, 1)), .Range(.Cells(r - 99, 3), .Cells(r + 10, 6)))
 End With
 
 ran.Select
 
 Set ran = Nothing

End Sub
'==============================================
rの初期値は適当にしてみました。
それから、Range型に変数に代入するときは、Setで代入しないとダメなんじゃないかな?

りんさん、こんな回答でいかがでしょうか?
りんさんなら、もっと上手く説明されると思いますが、ちょっと自分の勉強の為にでしゃばらせてもらいました。
もし不備。。。間違ったところがあったら、りんさん、お願いしますーm(__)m
 ───────────────────────────────────────  ■題名 : Re:Cellsを使って範囲選択する方法は?  ■名前 : こうき  ■日付 : 02/9/11(水) 20:15  -------------------------------------------------------------------------
   りんさん、つん さん、こんばんわ。
お礼が遅くなってごめんなさい。

ご指摘の通り混乱していました。
よく見れば確かに使い方がおかしかったですね。
簡単な質問をしてごめんなさい。

おかげさまでマクロが完成しました!!感謝!です。

今回のマクロは僕の2作目になります。
まだまだ作りたいものがたくさんあるので、また分からないことがあったら
ここで質問させていただきます。

それでは。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 66