- 締切済み
EXCELVBAについて。
ActiveWorkbook.ActiveSheet.Range(″◯◯″) ThisWorkbook.ActiveSheet.Range(″◯◯″) 前者は、新しく開いたブックのセルの記述で、後者は、元々開いていた(プログラムの書いてある)ブックのセルの記述です。これらは、どういう所で使えるexcelVBAのプログラムなのでしょうか?教えて頂けると幸いです。で、ActiveWorkbook.ActiveSheet.Range(″◯◯″) ThisWorkbook.ActiveSheet.Range(″◯◯″) この2つのプログラム片はどのように、使用するのでしょうか?教えて頂けると幸いです。よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- chayamati
- ベストアンサー率41% (260/624)
《予算実績対比表》を例に取って説明します。 添付図色付きのセルのマクロの領域で、利用者は背景色が無地のセルのみ入力します。 部門毎に月別の《予算実績対比表》のBoockの中に月別のSheetを作成します 例えば5部門あるとしますと5×12か月=60Sheet 年度毎に60Sheetの管理が必要になります 一方 ActiveWorkbook.ActiveSheet.Range("◯◯") ThisWorkbook.ActiveSheet.Range("◯◯") の Range("◯◯") Range("◯◯") と命令文の先頭部分を除去することで,VBAは数式のみになり ブックが開かれ特定の特定のシートが選択されたことになります ∴これらのSheetは一つのVBAに統一できます -------------------------------------------------------------」 Sub 予算実績() Range("B5").Select Application.CutCopyMode = False Range("B7").Select Application.CutCopyMode = False Range("C5").Select Application.CutCopyMode = False Range("C7").Select Application.CutCopyMode = False Range("D3").Select Application.CutCopyMode = False Range("D3").Select Selection.AutoFill Destination:=Range("D3:D7"), Type:=xlFillDefault Range("D3:D7").Select END Sub
- chayamati
- ベストアンサー率41% (260/624)
Sub test() ThisWorkbook.ActiveSheet.Range("◯◯") = ActiveWorkbook.ActiveSheet.Range("◯◯") End Sub このプログラムの用途を教えて頂けると幸いです。転記をするのは分かるの ですが。どういう時に転記するのでしょうか? ---------------------------------- 例えば《予算実績対比表》のように複数枚の同じ形式の月別の12枚のSheetの 年度別、部門別のBoockの特定のセルを変更する時ではないでしょうか 通常セルには数値、文字、式が混在しています。 これに複数の人が関わると数式のセルに実数置換えられる恐れがありますが これの復旧用にマクロ使用が有効かも 一つのSheet 尚マクロは Sub test() Range("◯◯") = Range("◯◯") End Sub で同じ結果が得られます
- chayamati
- ベストアンサー率41% (260/624)
回答№1の ActiveWorkbook.Application.CutCopyMode = False Application.CutCopyMode = False は不要です Sub this() Range("P1").Select ActiveCell.FormulaR1C1 = "=RC[-1]" Range("Q1").Select End Sub Sub acthive() Range("P1").Select this.ActiveCell.FormulaR1C1 = "=R[1]C[-1]" Range("Q1").Select End Sub ActiveWorkbook.Application.CutCopyMode = False >この2つのプログラム片はどのように、使用するのでしょうか? ●1年分のBOOCK内に1月、2月…と12か月分のSheetで必要とするVBAがあれば sheet毎にアクティブにしてから実行できます
補足
迅速な回答ありがとうございます!所で、 Sub test() ThisWorkbook.ActiveSheet.Range("◯◯") = ActiveWorkbook.ActiveSheet.Range("◯◯") End Sub このプログラムの用途を教えて頂けると幸いです。転記をするのは分かるのですが。どういう時に転記するのでしょうか?
- chayamati
- ベストアンサー率41% (260/624)
こんにちは Rangeの()以下は半角です ActiveWorkbook.ActiveSheet.Range("◯◯") ThisWorkbook.ActiveSheet.Range("◯◯") うまく説明出来ませんが結果は同じです 選択されてからマクロが実行される為 Sub this() Range("P1").Select ActiveWorkbook.Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=RC[-1]" Range("Q1").Select End Sub Sub acthive() Range("P1").Select Application.CutCopyMode = False this.ActiveCell.FormulaR1C1 = "=R[1]C[-1]" Range("Q1").Select End Sub
お礼
「ThisWorkbookでコードを書き、ActiveWorkbookでデータを入れる」とは、マクロが書かれているブック(ThisWorkbook)から、新しいブック(ActiveWorkbook)を作成し、操作するということを意味します。 具体的な流れ 1. ThisWorkbook(マクロが書かれているブック)にコードを書きます。ここで、新しいブックを作成する処理を記述します。 2. 新しく作成されたブックが自動的にActiveWorkbookとなるため、ActiveWorkbookを使って、その新しいブックにデータを入れたり、セルを操作することができます。の所で、新しいブックを作成する処理を記述する。とは、どういうプログラムでしょうか?教えて頂けると幸いです。
補足
年度別、部門別のBoockの特定のセルを変更する時ではないでしょうかの年度別というのは、どういう事でしょうか?年度別というのは、もしかして、2024年1月〜12月や、2025年1月〜12月といった感じでしょうか?部門別というのは、営業部などの様な事でしょうか? それと、これに複数の人が関わると数式のセルに実数置換えられる恐れがありますが これの復旧用にマクロ使用が有効かも 一つのSheetの所が分かりません。教えて頂けると幸いです。