コラム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件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
コードは見てないけど
Cells(行番号,列番号)
Range(Cells(開始行番号,開始列番号),Cells(終了行番号,終了列番号))
の形式のほうが素直でシンプルになると思うけど。
No.2
- 回答日時:
回答は出てますが、
こういった場合は、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
'--------------------------------------------
以上です。
No.1
- 回答日時:
> Range("LEFTCELL" & ":" & "RIGHTCELL").Select
これじゃあ「LEFTCELL」「RIGHTCELL」って文字列になってしまい、
変数扱いにはなりませんよ。おまけにLEFTCELLの中身は「$FH$4」など
という文字列になってる筈で、このやり方では列名を持ってこれません。
ですので例えば
RIGHTCELL=CStr(ActiveCell.Column)
とかで文字列変数として「列番号」を持ってくれば
Range(LEFTCELL & ":" & RIGHTCELL).Select
で予想通り「Range(4:4)」などになって選択できると思うんですが。
すいません、検証はしてませんので発想だけ、ということで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Excel(エクセル) エクセルでの左のセルのコピー 3 2022/07/25 12:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【Microsoft Forms】回答を削除...
-
Office 2021 Professional Plus...
-
マイクロソフト 一時使用コード...
-
【スプレッドシート】指定の日...
-
VLOOKUP関数について
-
英数字のみ全角から半角に変換
-
Microsoft Formsで「応答」から...
-
エクセルでXLOOKUP関数...
-
エクセルで英文字に入れた下線...
-
1つのPCに「Excel 2010」「Exc...
-
大学のレポート A4で1枚レポー...
-
マクロ自動コピペ 貼り付ける場...
-
Outlookでの時間指定送信機能に...
-
会社におけるOfficeライセンス...
-
Office Professional Academic ...
-
vb.net オブジェクト指向につい...
-
マイクロソフト オフィスについて
-
エクセルで例えば、関数を使っ...
-
Microsoft Officeを2台目のPCに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
マイクロソフト 一時使用コード...
-
英数字のみ全角から半角に変換
-
Office2021を別のPCにインスト...
-
Microsoft Formsの「個人情報や...
-
officeビジネス型のワードやエ...
-
会社PCのメールが更新されない
-
【スプレッドシート】指定の日...
-
Microsoft Officeを2台目のPCに...
-
何このステータスバー
-
2つのシートの一致する行のセ...
-
会社のTeamsのことで相談です。...
-
エクセルにリンクされるのをし...
-
Windows 11で、IME言語バー(IM...
-
office2010とoffice365の共存で...
-
Microsoftのパソコンです。 エ...
-
エクセルでXLOOKUP関数...
-
Excel関数について質問ですm(__)m
-
VBA
-
自分の専門分野の仕事。初見で...
おすすめ情報