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で表そうとしたら、 どう記述したらよいのでしょうか? |
こうきさん、こんばんわ。 > 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 |
りん さん、こんばんわ。 >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 こんなこともできるんですね。ぜひ参考にさせていただきます。 |
りん さん、こんばんわ。 たびたびすみません。 さきほどの記述を使って、 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のところが青くなって、 "引数は省略できません" というメッセージが出てきます。 何がいけないのでしょうか? |
こうきさん、おはようございます。 > 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の範囲指定の仕方はヘルプを見て確認してください。 |
りん さん、おはようございます。 すんません・・・りんさんへの質問にでしゃばってしまいました。 しかも、かぶった(>_<) 私も、Union使ったことないので、りんさんの回答で勉強させていただきました♪ |
こうき さん、おはようございんます。 りんさん、横からすみません。 > 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 |
りんさん、つん さん、こんばんわ。 お礼が遅くなってごめんなさい。 ご指摘の通り混乱していました。 よく見れば確かに使い方がおかしかったですね。 簡単な質問をしてごめんなさい。 おかげさまでマクロが完成しました!!感謝!です。 今回のマクロは僕の2作目になります。 まだまだ作りたいものがたくさんあるので、また分からないことがあったら ここで質問させていただきます。 それでは。 |