「教えて!ピックアップ」リリース!

VBAマクロの初級者です。ようやく実務でマクロを使い始めましたが躓く事ばかりです。
今回はあるブックの中のシートAをコピーして作成したシートBの「A3セル」への「シートAのA1セル」と「シートBのA2セル」の合計の仕方を教えていただけないでしょうか。
シートをコピーして左のシート(コピー元)の特定セルとアクティブシート(コピーしたシート)の特定セルの合計を出すようなマクロを作ってみましたがエラーも出ず結果も反映されずといった状態になってしまいます。よろしくお願いいたします。

質問者からの補足コメント

  • ありがとうございます。計算式は「マクロの記録」で確認出来ました。
    もう一つ、言葉足らずですみません。コピー元シートAのシート名を日付にしているため常にコピー元のシート名が変わります。この場合の書き方も教えていただけますでしょうか。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/11/20 17:32
  • ご回答ありがとうございます。シートは日々増えていき、その時の一番右のシートの右側にシートコピーしますので、シートをコピーした時の一番右のシートの特定セルとその左隣のシートの特定セルを足し算する式をマクロに組み込みたいと考えています。
    シートの並びは↓このような感じです。
    (「sheet1」[sheet2」「sheet3」「sheet(コピー元)」「sheet(新シート)」)
    正確に質問の意図をお伝え出来ておらず申し訳ございません。
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/11/21 09:27

A 回答 (5件)

以下のようにしてください。


Sub 合計()
Dim shA As Worksheet
Dim shB As Worksheet
Set shA = Worksheets(Worksheets.Count - 1)
Set shB = Worksheets(Worksheets.Count)
shB.Range("A3").Value = shA.Range("A1").Value + shB.Range("A2").Value
End Sub
    • good
    • 1
この回答へのお礼

簡潔かつ分かり易くご説明いただき有難うございました。大変助かりました。おかげさまで日々の作業が随分と楽になります。

お礼日時:2022/11/21 14:02

#4です


関係のない所ですが訂正します
sht.Select・・・×
正しくは
If Not sourceSht Is Nothing Then sourceSht.Select
    • good
    • 0

こんにちは


VBAでシートを扱う場合、オブジェクト変数にSetすると分かり易くなります

特定シートなどの場合 
名前やオブジェクト名で特定
Worksheets("Sheet1") や Sheet1 (プロパティウィンドウに表示されるオブジェクト名)

新規シートなどの場合
インデックスで特定
Worksheets(1) やWorksheets(Worksheets.Count)
(Worksheets.Countはワークシートの数を取得していますので一番右のシートを指します)(sheets.Countの方が適切かもしれません)

以上を踏まえると
Dim newSht As Worksheet '新シート(一番右)
Dim sourceSht As Worksheet 'コピー元?(右から2番目)
Dim defaultSht As Worksheet '特定シート
Set newSht = Worksheets(Worksheets.Count)
Set sourceSht = Worksheets(Worksheets.Count - 1)
Set defaultSht = Worksheets("Sheet1")

*Worksheets.Count - 1 シートが1シートしかない場合はエラーが返ります

他にもこんな方法も例
sourceShtを取得する(場所がわからないが名前が昨日になっている)

Dim sourceSht As Worksheet '場所がわからない
Dim sht As Worksheet
For Each sht In Worksheets
If sht.Name = Format(Date - 1, "yyyymmdd") Then
Set sourceSht = sht
Exit For
End If
Next
sht.Select

シートが特定できれば計算は出来ますよね
    • good
    • 2
この回答へのお礼

前の方のご回答プラスですごく丁寧にご説明いただき有難うございました。すごく勉強になりました。ベストアンサーは大変迷いましたが、前の方のご回答で計算式をセットすること自体は出来ましたので大変申し訳ございませんが前の方にベストアンサーを付けさせていただきました。まだまだマクロを勉強する必要がある身としましては一番勉強になりました。ありがとうございました。

お礼日時:2022/11/21 14:06

こんばんは。



シートの位置は、毎回同じになるのでしょうか?

Worksheets(1) : 一番左側のシートの意味

左から、1,2,3・・・となります。
この回答への補足あり
    • good
    • 1

こんにちは



>シートAをコピーして作成したシートBの~
そのままなら、「シートAのA1セル」は「シートBのA1セル」と同じなので、わざわざ別シートを参照する必要もなさそうに思えますが、そのあたりがどうなっているのか不明なので、ご質問文のままとして・・

Worksheets("シートB").Range("A3").Value = Worksheets("シートA").Range("A1").Value + Worksheets("シートB").Range("A2").Value

とかではいかがでしょうか。

タイトルに、
>計算式の入れ方を教えて下さい。
とあるので、計算式を設定したいという意味でしょうか?
もしそうなら、「マクロの記録」を利用して、計算式を設定する操作を記録してみれば得られると思います。
この回答への補足あり
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング