アプリ版:「スタンプのみでお礼する」機能のリリースについて

コラム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
のところがどうもまずいようでうまく動いてくれません。どうすればよいか教えてください。

ちなみになぜこういうことやろうとしているというと、右側にスクロールした時に数式のはいっているセルの列位置が行によって違うからです(でも起点列はいつも同じ)。

よろしくお願いいたします。

A 回答 (4件)

Range("LEFTCELL" & ":" & "RIGHTCELL").Select



Range(LEFTCELL & ":" & RIGHTCELL).Select
でよいと思います。変数扱いなのに、””でLEFTCELL と RIGHTCELL を囲っているので文字として認識されちゃっています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/25 14:29

コードは見てないけど


Cells(行番号,列番号)
Range(Cells(開始行番号,開始列番号),Cells(終了行番号,終了列番号))
の形式のほうが素直でシンプルになると思うけど。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/25 14:30

回答は出てますが、


こういった場合は、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
'--------------------------------------------

以上です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/25 14:31

> Range("LEFTCELL" & ":" & "RIGHTCELL").Select



これじゃあ「LEFTCELL」「RIGHTCELL」って文字列になってしまい、
変数扱いにはなりませんよ。おまけにLEFTCELLの中身は「$FH$4」など
という文字列になってる筈で、このやり方では列名を持ってこれません。
ですので例えば

RIGHTCELL=CStr(ActiveCell.Column)

とかで文字列変数として「列番号」を持ってくれば

Range(LEFTCELL & ":" & RIGHTCELL).Select

で予想通り「Range(4:4)」などになって選択できると思うんですが。

すいません、検証はしてませんので発想だけ、ということで。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/25 14:32

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