- ベストアンサー
Excelマクロの使い方についてお教えください
- Excelマクロを使用して、E列の値をF列に値を入れる方法について教えてください。
- 現在のマクロでは、「値のみを貼り付け」をした際に、途中から同じ値がコピーされてしまう問題が発生しています。
- 正しくデータを貼り付ける方法や、問題解決のためのマクロの改良方法を教えていただきたいです。
- みんなの回答 (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
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
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
お礼
ありがとうございます! このマクロで正常に値のみ貼り付けができました。 中身はじっくり調べて、色々学ばせていただきます。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 結局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
お礼
ありがとうございます! 切り貼りしながら覚えたマクロだったので、苦戦してました。 Test2の形でマクロができるのは意外でした、これは眼から鱗です。 あとでじっくり調べて、学ばせていただきます。