• 締切済み

EXCEL マクロ

エクセルマクロ初心者です。 エクセル2007で、複数選択したセルの合計値・平均値をコピーできないか悩んでいます。作業によって、選択するセルが変わりますので、セル番地の指定をせずにマクロの書くことができますでしょうか。 イメージとしては、複数のセルを選択をしたときに、ステータスバーにオートカルクで表示される合計値・平均値をクリップボードにコピーし、別のセルに結果をペーストする感じ(ペーストする際に合計値・平均値のどちらを貼り付けるか選択できれば尚、良)です。 個人用マクロブックに登録して、不特定ブックで使用したいマクロです。よい方法があれば教えて下さい。

みんなの回答

回答No.1

とりあえず、こんな内容ではいかがでしょうか。 VB Editor の[ツール]-[参照設定] で、"Microsoft Forms 2.0 Object Library" を選択しておきます。 標準モジュールに記述する運用マクロです。 Sub 選択セル集計()  Dim rng, ttl, num, obj  For Each rng In Selection   If IsNumeric(rng.Value) Then    ttl = ttl + rng.Value    num = num + 1   End If  Next  Set obj = New DataObject  obj.SetText ttl & "/" & num  obj.PutInClipboard End Sub Sub 合計貼付け()  Dim obj As DataObject  On Error Resume Next  Set obj = New DataObject  obj.GetFromClipboard  Selection = "=" & Left(obj.GetText, InStr(obj.GetText, "/") - 1) End Sub Sub 平均貼付け()  Dim obj As DataObject  On Error Resume Next  Set obj = New DataObject  obj.GetFromClipboard  Selection = "=" & obj.GetText End Sub 以下はセルの右クリックメニュー設定用です。 標準モジュールに記述して一回だけ実行します。 Sub AddMenu()   Dim NewItem, NewSub   Set NewItem = Application.CommandBars("Cell").Controls.Add _    (Type:=msoControlButton)   With NewItem    .Caption = "選択セル集計"    .OnAction = "選択セル集計"    .BeginGroup = True   End With   Set NewItem = Application.CommandBars("Cell").Controls.Add _    (Type:=msoControlPopup)   With NewItem    .Caption = "貼付けExt"   End With   Set NewSub = NewItem.Controls.Add   With NewSub    .Caption = "合計"    .OnAction = "合計貼付け"   End With   Set NewSub = NewItem.Controls.Add   With NewSub    .Caption = "平均"    .OnAction = "平均貼付け"   End With End Sub 複数セルを選択した状態で右クリックメニューから「選択セル集計」を実行すると、合計とセルの数がクリップボードに入れられます。 また、コピー先のセルの右クリックメニューから「貼付けExt」を選択し、合計か平均かを指定します。 以下は、上記項目を右クリックメニューから削除したいときに実行するモジュールです。 一応書いておきます。 Sub DLT()  CommandBars("Cell").Controls("選択セル集計").Delete  CommandBars("Cell").Controls("貼付けExt").Delete End Sub

ponte5616
質問者

お礼

私のやりたかったことを網羅した完璧なマクロでした。非常に助かりました。ありがとうございました。