[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロの変数を使って数式を代入しているのですがうまく代入できません。』(emidij)
下記マクロを実行すると、エラーにはならないのですが、該当セルに数式が代入されず、どう修正すればいいのか分からず困っております。
マクロ初心者の為、どなたかご教授頂ければ幸いです。
よろしくお願い致します。
Sub Macro6()
Application.ScreenUpdating = False Application.DisplayAlerts = False
Dim lRow As Long Dim lColumn As Long
lRow = Cells(Rows.Count, "F").End(xlUp).Row lColumn = Range("F1").Value
With Cells(6, 7).Formula = "=SUM(H6:" & Cells(6, lColumn * 2 + 7) & ")" Range("G6").AutoFill Destination:=Range("G6").Resize(lRow - 2, 1) End With
With Cells(lRow - 1, lColumn * 2 + 8).Formula = "=SUM(" & Cells(6, lColumn * 2 + 8) & ":" & Cells(lRow - 2, lColumn * 2 + 8) & ")" Cells(lRow - 1, lColumn * 2 + 8).AutoFill Destination:=Cells(lRow - 1, lColumn * 2 + 8).Resize(1, lColumn) End With
With Cells(lRow, lColumn * 2 + 8) .Formula = "=" & Cells(lRow - 1, lColumn * 2 + 8) End With
With Cells(lRow, lColumn * 2 + 9).Formula = "=" & Cells(lRow, lColumn * 2 + 8) & "+" & Cells(lRow - 1, lColumn * 2 + 9) Cells(lRow, lColumn * 2 + 9).AutoFill Destination:=Cells(lRow, lColumn * 2 + 9).Resize(1, lColumn - 1) End With
With Cells(lRow + 1, lColumn * 2 + 8).Formula = "=" & Cells(lRow, lColumn * 2 + 8) & "/$F$" & lRow Cells(lRow + 1, lColumn * 2 + 8).AutoFill Destination:=Cells(lRow + 1, lColumn * 2 + 8).Resize(1, lColumn - 1) End With
ActiveWorkbook.Names.Add Name:="グラフ範囲", RefersToLocal:=Range(Cells(lRow - 1, lColumn * 2 + 7), Cells(lRow + 1, lColumn * 3 + 7))
Application.ScreenUpdating = True Application.DisplayAlerts = True
End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
この行は、何をしたくて書いたものでしょうか?
(ほかにもあります)
(わからん) 2022/01/21(金) 16:19
With Cells(6, 7).Formula = "=SUM(H6:" & Cells(6, lColumn * 2 + 7) & ")"
の部分についてですが、
セルG6に、セルH6からセルF1(lColumn)に入力されている数字×2+7列分の範囲の合計出したいと思っております。
(emidij) 2022/01/21(金) 16:39
「With」はどういう意味ですか?
(わからん) 2022/01/21(金) 16:51
>With Cells(6, 7).Formula = "=SUM(H6:" & Cells(6, lColumn * 2 + 7) & ")" >Range("G6").AutoFill Destination:=Range("G6").Resize(lRow - 2, 1) >End With
With Range("G6") .FormulaR1C1 = "=SUM(RC[1]:RC[" & lColumn * 2 + 7 & "])" .AutoFill Destination:=Range("G6:G" & lRow) End With
行いたいのは こんな事?
(ピンク) 2022/01/21(金) 19:38
>With Cells(6, 7).Formula = "=SUM(H6:" & Cells(6, lColumn * 2 + 7) & ")" >Range("G6").AutoFill Destination:=Range("G6").Resize(lRow - 2, 1) >End With
↓
With Range("G6") .FormulaR1C1 = "=SUM(RC[1]:RC[" & lColumn * 2 + 7 & "])" .AutoFill Destination:=Range("G6:G" & lRow) End With
↓
Range("G6:G" & lRow).FormulaR1C1 = "=SUM(RC[1]:RC[" & lColumn * 2 + 7 & "])"
(ピンク) 2022/01/21(金) 21:33
■2
VBAではインデントの有無は実行上の意味を持つことはありません。(あってもなくても正常にうごきます)
一方で、インデントを適切につけることでコードの構造が把握しやすくなり、デバッグ作業の効率アップにつながると思いますので拘りがなければ、インデントをつけるようにすることをお勧めします。
■3
[[20220119164436]] 『マクロ実行時のエラーについて』(emidij)
提示のコードを↑と同じ感じで整理してみると多分こんな感じになるとおもいます。
Sub Macro6_整理() 'Application.ScreenUpdating = False Application.DisplayAlerts = False
Dim lRow As Long Dim lColumn As Long
With ActiveSheet lRow = .Cells(.Rows.Count, "F").End(xlUp).Row lColumn = .Range("F1").Value
.Range("G6").Resize(lRow - 2, 1).Formula = "=SUM(H6:" & Cells(6, lColumn * 2 + 7) & ")" .Cells(lRow - 1, lColumn * 2 + 8).Resize(1, lColumn).Formula = "=SUM(" & Cells(6, lColumn * 2 + 8) & ":" & Cells(lRow - 2, lColumn * 2 + 8) & ")" .Cells(lRow, lColumn * 2 + 8).Formula = "=" & Cells(lRow - 1, lColumn * 2 + 8) .Cells(lRow, lColumn * 2 + 9).Resize(1, lColumn - 1).Formula = "=" & Cells(lRow, lColumn * 2 + 8) & "+" & Cells(lRow - 1, lColumn * 2 + 9) .Cells(lRow + 1, lColumn * 2 + 8).Resize(1, lColumn - 1).Formula = "=" & Cells(lRow, lColumn * 2 + 8) & "/$F$" & lRow
ActiveWorkbook.Names.Add Name:="グラフ範囲", RefersToLocal:=Range(.Cells(lRow - 1, lColumn * 2 + 7), .Cells(lRow + 1, lColumn * 3 + 7)) End With
'Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
一旦落ち着いてそれぞれがどう関係してるのか見直してみてはいかがでしょうか?
(もこな2) 2022/01/21(金) 22:07
Sub Macro6_整理() 'Application.ScreenUpdating = False Application.DisplayAlerts = False Dim lRow As Long Dim lColumn As Long With ActiveSheet lRow = .Cells(.Rows.Count, "F").End(xlUp).Row lColumn = .Range("F1").Value .Range("G6").Resize(lRow - 2, 1).Formula = "=SUM(H6:H" & Cells(6, lColumn * 2 + 7).Row & ")" .Cells(lRow - 1, lColumn * 2 + 8).Resize(1, lColumn).Formula = "=SUM(" & Cells(6, lColumn * 2 + 8).Address(False, False) & ":" & Cells(lRow - 2, lColumn * 2 + 8).Address(False, False) & ")" .Cells(lRow, lColumn * 2 + 8).Formula = "=" & Cells(lRow - 1, lColumn * 2 + 8).Address(False, False) .Cells(lRow, lColumn * 2 + 9).Resize(1, lColumn - 1).Formula = "=" & .Cells(lRow, lColumn * 2 + 8).Address(False, False) & "+" & .Cells(lRow - 1, lColumn * 2 + 9).Address(False, False) .Cells(lRow + 1, lColumn * 2 + 8).Resize(1, lColumn - 1).Formula = "=" & Cells(lRow, lColumn * 2 + 8).Address(False, False) & "/$F$" & lRow ActiveWorkbook.Names.Add Name:="グラフ範囲", RefersToLocal:=Range(.Cells(lRow - 1, lColumn * 2 + 7), .Cells(lRow + 1, lColumn * 3 + 7)) End With 'Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
(もこな2) 2022/01/23(日) 09:28
わからん様、ピンク様もご回答ありがとうございました。
(emidij) 2022/01/24(月) 14:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.