• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelマクロのことで教えて下さい)

Excelマクロの使い方についてお教えください

このQ&Aのポイント
  • Excelマクロを使用して、E列の値をF列に値を入れる方法について教えてください。
  • 現在のマクロでは、「値のみを貼り付け」をした際に、途中から同じ値がコピーされてしまう問題が発生しています。
  • 正しくデータを貼り付ける方法や、問題解決のためのマクロの改良方法を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんばんは。 元のコードを直してみました。ご質問のようなコードでは、ループは必要ないのですが、こういう書き方は、少し手慣れた人が書く方法で、難易度が高くなります。しかし、必ずしもちゃんとしたマクロとはいえません。 本来は、Test2() のような、ワークシートの数式は用いずに、VBAマクロのみにしましょう。なお、ループ式で量的に多い場合、必要に応じて、Application.ScreenUpdating = False, Application.ScreenUpdating = Trueを、始めと終わりに入れてください。また、VBA/VB6では、変数の宣言は、プロシージャ名の後に入れてください。 '//以下のようなコードは、あまり関心しません。 Sub TestR()  Dim i As Long  Worksheets("Sheet1").Select  i = Cells(Rows.Count, 4).End(xlUp).Row  Range("F2").FormulaLocal = "=E2/1024/1024"  Range(Cells(2, 6), Cells(i, 6)).FillDown  Range(Cells(2, 6), Cells(i, 6)).Copy  Range("F2").PasteSpecial Paste:=xlValues  Application.CutCopyMode = False End Sub '// 難易度を下げたマクロ(標準Moduleに限ります) Sub Test2()  Dim i As Long  Worksheets("Sheet1").Select  For i = 2 To Cells(Rows.Count, 4).End(xlUp).Row   Cells(i, 6).Value = Cells(i, 5).Value / 1024 / 1024  Next i End Sub

kagakulove
質問者

お礼

ありがとうございます! 切り貼りしながら覚えたマクロだったので、苦戦してました。 Test2の形でマクロができるのは意外でした、これは眼から鱗です。 あとでじっくり調べて、学ばせていただきます。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! たびたびごめんなさい。 もう一度質問のコードを見直してみました。 F2セルにはちゃんと E2/1024/1024 の結果が表示されますね! これをD列最終行までオートフィルでコピーし、値として表示したい訳ですよね? No.1のコードでも同じ結果になると思いますが、極力お示しのコード通りオートフィルでやってみると Sub test1() Worksheets("Sheet1").Select Dim i As Long i = Cells(Rows.Count, "D").End(xlUp).Row Range("F2").Value = "=E2 / 1024 / 1024" Range("F2").Select Selection.AutoFill Destination:=Range(Cells(2, "F"), Cells(i, "F")), Type:=xlFillDefault With Range(Cells(2, "F"), Cells(i, "F")) .Value = .Value End With End Sub といった感じでも大丈夫だと思います。 何度も失礼しました。m(_ _)m

kagakulove
質問者

お礼

ありがとうございます! このマクロで正常に値のみ貼り付けができました。 中身はじっくり調べて、色々学ばせていただきます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 結局E列数値を1024で2回割った結果をF列に表示したい!というコトですよね? >Range("F2").Value = "=E2/1024/1024" の部分はダブルクォーテーションでくくってあるために、文字列になってしまうと思います。 ごく単純に Sub Sample1() Dim lastRow As Long Worksheets("Sheet1").Select lastRow = Cells(Rows.Count, "D").End(xlUp).Row If lastRow > 1 Then With Range(Cells(2, "F"), Cells(lastRow, "F")) .Formula = "=E2/1024/1024" .Value = .Value End With End If End Sub ではどうでしょうか?m(_ _)m