- 締切済み
Excel Macro セル範囲の設定方法
コラムFGに予め数式を入れておき、コラムFHから右横にスクロールしていって数式のはいっているセルを見つけたら、1セル分だけ左側に戻し、FHからその1セル分左側に戻ったセル番地を範囲とし、その範囲内にあるセル(この範囲内にあるセルは全て空白セル)にFGの数式をコピーしたく、以下のようなマクロを書いてみました。 Range("FG" & ROWNUM).Select Selection.Copy Range("FG" & ROWNUM).End(xlToRight).Select ActiveCell.Offset(0, -1).Select LEFTCELL = Range("FH" & ROWNUM).Address RIGHTCELL = ActiveCell.Address Range("LEFTCELL" & ":" & "RIGHTCELL").Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False (ROWNUMは行数の変数で、これをLOOPさせ、複数行に同じ処理をする) これで大体やりたいことはわかって頂けると思うのですが 多分Range("LEFTCELL" & ":" & "RIGHTCELL").Select のところがどうもまずいようでうまく動いてくれません。どうすればよいか教えてください。 ちなみになぜこういうことやろうとしているというと、右側にスクロールした時に数式のはいっているセルの列位置が行によって違うからです(でも起点列はいつも同じ)。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- tttmhappy
- ベストアンサー率27% (11/40)
Range("LEFTCELL" & ":" & "RIGHTCELL").Select は Range(LEFTCELL & ":" & RIGHTCELL).Select でよいと思います。変数扱いなのに、””でLEFTCELL と RIGHTCELL を囲っているので文字として認識されちゃっています。
- rivoisu
- ベストアンサー率36% (97/264)
コードは見てないけど Cells(行番号,列番号) Range(Cells(開始行番号,開始列番号),Cells(終了行番号,終了列番号)) の形式のほうが素直でシンプルになると思うけど。
お礼
ありがとうございました。
- myRange
- ベストアンサー率71% (339/472)
回答は出てますが、 こういった場合は、Selectは不要ですし、 データが多いといちいちSelectすると処理スピードが落ちますので Selectは必要最小限にしましょう。 '------------------------------------------------- Sub test() Dim Rownum As Long Dim Clm As Integer For Rownum = 1 To 3 Clm = Cells(Rownum, "FG").End(xlToRight).Offset(, -1).Column Cells(Rownum, "FG").Copy Range(Cells(Rownum, "FH"), Cells(Rownum, Clm)).PasteSpecial _ Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Next Rownum Application.CutCopyMode = False End Sub '-------------------------------------------- 以上です。
お礼
ありがとうございました。
- FEX2053
- ベストアンサー率37% (7995/21384)
> Range("LEFTCELL" & ":" & "RIGHTCELL").Select これじゃあ「LEFTCELL」「RIGHTCELL」って文字列になってしまい、 変数扱いにはなりませんよ。おまけにLEFTCELLの中身は「$FH$4」など という文字列になってる筈で、このやり方では列名を持ってこれません。 ですので例えば RIGHTCELL=CStr(ActiveCell.Column) とかで文字列変数として「列番号」を持ってくれば Range(LEFTCELL & ":" & RIGHTCELL).Select で予想通り「Range(4:4)」などになって選択できると思うんですが。 すいません、検証はしてませんので発想だけ、ということで。
お礼
ありがとうございました。
お礼
ありがとうございました。