プログラミング未経験者の備忘録

ノンプログラマーが社内SEになったのでイチからプログラミングを勉強し始めました!

Excelマクロでセルを別のシートにコピーすると数式がコピーされエラーになる対処

f:id:su3se:20200609115614j:plain

Excelのセルを別のシートにコピーする
セルをコピーする方法としてはいろいろな書き方がありますが今回はこの方法をベースにしました。

f:id:su3se:20200609115051p:plain

例題
2行目ソース

'通常のコピー
Worksheets("Sheet1").Range("E3").Copy Worksheets("Sheet2").Range("A1")

Sheet1のE3の値2をSheet2のA1にコピーする

f:id:su3se:20200609115122p:plain

問題なくコピーされる

f:id:su3se:20200609115145p:plain

次に6行目のソースを試します。

'関数の含まれているセルをコピー
Worksheets("Sheet1").Range("E6").Copy Worksheets("Sheet2").Range("A3")

E列をオートサムしたセルE6(関数を含むセル)を別シート(Sheet2)のA3にコピーする

f:id:su3se:20200609115222p:plain

こままだと #REF になりコピーすることが出来ません。

f:id:su3se:20200609115301p:plain

同一シートでもエラーとなります。

最後に以下を試してみます。

'関数の含まれているセルの値をコピー
Worksheets("Sheet2").Range("A5").Value = Worksheets("Sheet1").Range("E6").Value

2番目の例題と同じように関数を含むセルを今度はA5にコピーしてみます。
今度はきちんと表示されました。

f:id:su3se:20200609115345p:plain

3番目の例題では初めの2つのコードでは、「シート1をコピーしてシート2にペーストする」というような意味合いですが、今回は「シート2のセルはシート1のセルと同じ」という書き方をしています。

Valueプロパティは指定しなければValueとみなす、と理解していたので
通常の値だけのセルであれば.Valueプロパティを省略してもうまく機能するが関数を含むセルの場合は.Valueを省略せずに書かないといけないというは勉強になりました。

しかしなぜValueをしないと動かんのだ・・・
それを説明できないのでまだまだ勉強不足ですな
誰か賢い方教えてください。