• 締切済み

エクセルVBAで解らないコードの意味を教えてくれませんか?

お世話になります。 以前こちらでVBAで質問した際に下記のようなコードを教えていただきました。足し算のコードと言うのは分かるのですが、SUM以降の意味がどうも理解できませんでした。どなたか判る方教えていただけませんでしょうか? ws.Range(ws.Cells(r, 2), ws.Cells(r, c)).Formula = "=SUM([" & .Parent.Name & "]" & .Name & "!A3:A" & .Rows.Count & ")" よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

ws シート名。シートを限定。 Range(ws.Cells(r, 2), ws.Cells(r, c)).Formula rが行を指定、cは列を指定。 ここまでのステップで具体的に決まっている必要アリ セル範囲 セルB列r行からC列r行までの範囲に数式SUM関数を設定 "=SUM([" & .Parent.Name & "]" & .Name & "!A3:A" & .Rows.Count & ")" 文字列で式を表し、それをFormulaエリアに代入している=>式を設定している。 []内はブック指定、.Nameはシート名か With wsが前にあるはず。無いのは質問者が意味がわかっていないのでカットしたのだろう。また対のEnd Withがあるはず。 !は素の前部がシート名が来ている区切りのしるし。 Rows.Count シートの行数。2003までは65536. "!A3:A" & .Rows.Count !A3:A65536になる .Parent.Name のいみは原理的に、むつかしいが、シートなどのオブジェクトは階層構造で、シートオブジェクトの直上のブックオブジェクトの名前を取るいうこと。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

多分、ある範囲のセルに式を設定しています。  =SUM([○○]△△!A3:A◇) 察するに、○○、△△、はファイル名、シート名で◇はA列の範囲を示すための数字、までは想像できますが、後は#1の方同様情報不足です。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

この記述の前に With **** というような記述がありませんか? この With **** の部分がわからないと具体的な回答はしにくいと思います。 略さないでコードをアップしてみてください。

asahijp
質問者

補足

皆さん、申し訳ありませんでした。私も意味も解らず省略してしまいました。 補足でコードを書き出してみます。 これは毎日送られてくる日計表のデータを他のブックの集計表に日にちごとに集計するものを作ったものです。 ========================== Sub sample() Dim ws As Worksheet Dim file As Variant Dim r As Long Dim c As Long ChDir ThisWorkbook.Path file = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If file = False Then Exit Sub Application.ScreenUpdating = False With Workbooks.Open(file) With .Sheets(1) Set ws = ThisWorkbook.Sheets(StrConv(Month(.Range("A1")), vbWide) & "月") r = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1 c = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column .Range("A1").Copy Destination:=ws.Cells(r, 1) ws.Range(ws.Cells(r, 2), ws.Cells(r, c)).Formula = "=SUM([" & .Parent.Name & "]" & .Name & "!A3:A" & .Rows.Count & ")" End With ws.Range(ws.Cells(r, 2), ws.Cells(r, c)).Copy ws.Range(ws.Cells(r, 2), ws.Cells(r, c)).PasteSpecial xlPasteValues Application.CutCopyMode = False .Close End With Application.ScreenUpdating = True End Sub =========================== というような感じです。

関連するQ&A