
VBAマクロの初級者です。ようやく実務でマクロを使い始めましたが躓く事ばかりです。
今回はあるブックの中のシートAをコピーして作成したシートBの「A3セル」への「シートAのA1セル」と「シートBのA2セル」の合計の仕方を教えていただけないでしょうか。
シートをコピーして左のシート(コピー元)の特定セルとアクティブシート(コピーしたシート)の特定セルの合計を出すようなマクロを作ってみましたがエラーも出ず結果も反映されずといった状態になってしまいます。よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
以下のようにしてください。
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
No.5
- 回答日時:
#4です
関係のない所ですが訂正します
sht.Select・・・×
正しくは
If Not sourceSht Is Nothing Then sourceSht.Select
No.4
- 回答日時:
こんにちは
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
シートが特定できれば計算は出来ますよね
前の方のご回答プラスですごく丁寧にご説明いただき有難うございました。すごく勉強になりました。ベストアンサーは大変迷いましたが、前の方のご回答で計算式をセットすること自体は出来ましたので大変申し訳ございませんが前の方にベストアンサーを付けさせていただきました。まだまだマクロを勉強する必要がある身としましては一番勉強になりました。ありがとうございました。
No.1
- 回答日時:
こんにちは
>シートAをコピーして作成したシートBの~
そのままなら、「シートAのA1セル」は「シートBのA1セル」と同じなので、わざわざ別シートを参照する必要もなさそうに思えますが、そのあたりがどうなっているのか不明なので、ご質問文のままとして・・
Worksheets("シートB").Range("A3").Value = Worksheets("シートA").Range("A1").Value + Worksheets("シートB").Range("A2").Value
とかではいかがでしょうか。
タイトルに、
>計算式の入れ方を教えて下さい。
とあるので、計算式を設定したいという意味でしょうか?
もしそうなら、「マクロの記録」を利用して、計算式を設定する操作を記録してみれば得られると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
シートを追加・名前を次月に変更、前月内容を貼り付け
Excel(エクセル)
-
-
4
エクセルのセル内の「数式」の一括変更をVBAなどで行いたいです!
Visual Basic(VBA)
-
5
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
6
別シート参照のセルをシート毎にずらしたいです
Excel(エクセル)
-
7
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
8
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
9
【Excel】 セルの色での判断はできますか?
Excel(エクセル)
-
10
EXCEL関数でシート名が変わる可能性があるシートのデータを表示させたい
その他(ソフトウェア)
-
11
エクセルのマクロ機能で前のシートに返るVBAはどうかくか
Excel(エクセル)
-
12
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
13
エクセル ボタンに設定したマクロごとボタンをコピー
Excel(エクセル)
-
14
エクセルvbaで、別シートの最下行にデータを取り込むコードを教えてください。
Visual Basic(VBA)
-
15
Excel_マクロ_現在開いているシートにマクロを実行したいです
Visual Basic(VBA)
-
16
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
実行時エラー1004「Select メソ...
-
【ExcelVBA】全シートのセルの...
-
excelのマクロで該当処理できな...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
EXCEL VBAで複数シートから該当...
-
ExcelのVBAを使い、複数シート...
-
【VBA】色のついたシート名を取得
-
VBAで指定シート以外の選択
-
同じ作業を複数のシートに実行...
-
【エクセルVBA】「Protect User...
-
Excel VBA での計算について…
-
ユーザーフォームに入力したデ...
-
VBA ユーザーフォーム上のチェ...
-
【エクセル】オプションボタン...
-
VBA 入力月で該当シートを選択...
-
【Excel VBA】Worksheets().Act...
-
【VBA】全ての複数シートから指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
エクセルで通し番号を入れてチ...
-
VBA 検索して一致したセル...
-
XL:BeforeDoubleClickが動かない
-
VBA 指定した回数分、別シート...
-
VBAマクロでシートコピーした新...
-
シートが保護されている状態で...
-
ブック名、シート名を他のモジ...
-
【VBA】全ての複数シートから指...
-
別のシートから値を取得するとき
-
ExcelのVBAのマクロで他のシー...
-
Excel チェックボックスにチェ...
おすすめ情報
ありがとうございます。計算式は「マクロの記録」で確認出来ました。
もう一つ、言葉足らずですみません。コピー元シートAのシート名を日付にしているため常にコピー元のシート名が変わります。この場合の書き方も教えていただけますでしょうか。
ご回答ありがとうございます。シートは日々増えていき、その時の一番右のシートの右側にシートコピーしますので、シートをコピーした時の一番右のシートの特定セルとその左隣のシートの特定セルを足し算する式をマクロに組み込みたいと考えています。
シートの並びは↓このような感じです。
(「sheet1」[sheet2」「sheet3」「sheet(コピー元)」「sheet(新シート)」)
正確に質問の意図をお伝え出来ておらず申し訳ございません。
よろしくお願いいたします。