タイトルがわかりにくくてすみません。
やりたいことは、例えば一つのブックにシート名が1~10までとA1~A10まであるとします。
シートA○のセルA1とセルA2に数字を入力したら、シート○のA1にシートA○のセルA1とセルA2の合計が自動入力されるようにするには、どのようなコードを書けばよいのでしょうか。
更に、できれば参照元であるシートA○を削除してもシート○に自動入力されたデータが消えないようにならないかと考えています。
今まではVBAを使わずに、CELL関数のfilenameからシート名を調べてINDIRECT関数で対応するシートのセルを参照するという方法を使ってきましたが、関数が長くなるうえに、参照元のシートを削除してしまうとエラーになってデータが消えてしまいます。
今回、報告には大まかなデータを入力するフォームで提出するが、こちらで詳細なデータをとっておきたいという状況が生まれたため、詳細なデータをシートA○に入力したら、大まかなデータがシート○に自動入力され、報告時にシートA1~A10を削除してそのまま報告できるようなフォームができないかと考え調べ始めました。
しかしVBAはコピペでしか使ったことが無く、自力で調べるにも適切な検索ワードを選択する能力すらありません。
出来る限り自力で調べようと思ったのですが、初心者の状態でやりたいことだけをピックアップして学ぶのは相当難しいと痛感して終わりました。もしかしたら「こんなことわざわざ聞くんじゃねーよ」と思われる様な内容かもしれませんが、是非教えてください。
No.1ベストアンサー
- 回答日時:
とりあえず以下で如何でしょう?
マクロfooを実行すると、選択されているブックの各シートA○のセルA1とセルA2の合計を、対応するシート○のセルA1に書きます。シート○が存在しない場合はメッセージを表示します。
> シートA○のセルA1とセルA2に数字を入力したら、シート○のA1にシートA○のセルA1とセルA2の合計が自動入力される
数字を入力したら自動で計算・入力させる様にするには、各A○シートにコードを記入する必要があります。ですから、そのシートを削除することにある用途での使用は現実的でないと思います。
-----------------------------------------------------
Sub foo()
Dim dic As Object
Dim ws As Worksheet
Dim name As String
Set dic = CreateObject("Scripting.Dictionary")
With ActiveWorkbook
' A無しシートの存在チェック
For Each ws In .Worksheets
If Left(ws.name, 1) <> "A" Then
dic(ws.name) = True
End If
Next
' 計算&記入
For Each ws In .Worksheets
If Left(ws.name, 1) = "A" Then
name = Mid(ws.name, 2)
If Not dic.Exists(name) Then
MsgBox name & "シートがありません", vbExclamation
Else
.Worksheets(name).Range("A1").Value _
= ws.Range("A1").Value + ws.Range("A2").Value
End If
End If
Next
End With
Set dic = Nothing
End Sub
ありがとうございます!
あとは書いていただいたコードを調べて、実際に使うフォームに当てはめていきます。
足がかりが全く分からなかったので、ほんとに助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- その他(Microsoft Office) エクセルで串刺ししたシートの並べ替えをしたいです 4 2023/02/14 11:59
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
特定の文字を含むシートだけマ...
-
VBA 入力月で該当シートを選択...
-
VBA 存在しないシートを選...
-
Excel VBA 複数行を数の分だけ...
-
別のシートを参照して計算する方法
-
ユーザーフォームに入力したデ...
-
実行時エラー1004「Select メソ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
Excel チェックボックスにチェ...
-
セルのコピーで「オブジェクト...
-
エクセルVBAでダブルクリックを...
-
複数シートに色付きセル(条件つ...
-
重複するidをデータごとにまと...
-
一括印刷マクロ シート名を数字...
-
VBA 最終行まで数式をコピーする
-
Excel マクロについての相談
-
エクセルのシート名変更で重複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報