- ベストアンサー
エクセル2003 マクロ機能を使ったコピー
- エクセル2003のマクロ機能を使用して、値のみを別のシートにコピーする方法について質問です。
- 質問者はエクセルのマクロ初心者であり、計算式が入ったセルから値のみを別のシートにコピーしたいと考えています。
- しかしながら、40番の行でエラーが発生してしまっているため、解決策を求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
直接の回答としては 変更前: Worksheets("年").Range(Cells(月, 3)).Select 変更後: Worksheets("年").Cells(月, 3).Select のようになります。10行に書いたのと同じですね。 実際にはセレクトとか極力せずに sub macro1() dim m as long m = worksheets("毎月").range("B1").value + 3 worksheets("年").cells(m, 3).value = worksheets("毎月").range("F24").value end sub のような書きぶりで作成できるよう,練習してみてください。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
私流にテスト Private Sub test01() 月 = Worksheets("Sheet1").Cells(1, "B") 月 = 月 + 3 MsgBox 月 Worksheets("Sheet2").Range("F24").Copy Destination:=Worksheets("Sheet3").Cells(月, "C") Selection.ClearFormats End Sub >test01() の部分が無い。こういう凡ミスに注意。 >Worksheets("Sheet1").Cells(1, "B") 個人的には、Cells(1, 2)より判りやすい。 >・・・Destination:=Worksheets("Sheet3").Cells(月, "C") このほうが簡潔。 ただし書式も移る。普通は移るほうが望ましいが、イヤなら Selection.ClearFormatsを入れた。 >Range(Cells(月, 3)).Select RangeとCellsは、セル範囲を表すときは、組み合わせて使うが、単独セルを指定する場合ならRange()かCells()のどちらか1つで良い。 本質問はここがエラー原因だろう。
お礼
テストまでしてもらい、ありがとうございます。 無事に解決できました。 また、分かりやすいセルの指定方法も参考になりました。
お礼
原因とマクロの基本的な考えについて、教えて頂きありがとうございます。 マクロも無事に動きました! 今後は、アドバイスいただいた内容を意識して作成してみます。