Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1583 / 13644 ツリー ←次へ | 前へ→

【73306】罫線で囲まれた範囲の合計式を記入したい ブーチー 12/12/19(水) 9:44 質問[未読]
【73307】Re:罫線で囲まれた範囲の合計式を記入したい UO3 12/12/19(水) 10:56 発言[未読]
【73309】Re:罫線で囲まれた範囲の合計式を記入したい ブーチー 12/12/19(水) 14:41 お礼[未読]
【73312】Re:罫線で囲まれた範囲の合計式を記入したい ブーチー 12/12/19(水) 20:36 発言[未読]

【73306】罫線で囲まれた範囲の合計式を記入したい
質問  ブーチー  - 12/12/19(水) 9:44 -

引用なし
パスワード
   罫線で囲まれた範囲にある数字を合計する式をマクロで記入したいです。
具体的には次のようになります。


   −−−−−
22

43
21

    =SUM(D19:D37)  ←ここにマクロで式を入れたい
   −−−−−

式を入れるセルがselectされています。

合計する行の範囲は罫線から罫線の間になります。
罫線は、式を入れる列にあります。

合計する数字は、式が入るセルのひとつ左の列になります。

【73307】Re:罫線で囲まれた範囲の合計式を記入し...
発言  UO3  - 12/12/19(水) 10:56 -

引用なし
パスワード
   ▼ブーチー さん:

こんにちは
むしろ、隣の1列すべての下の罫線の上の行に合計式をせっとしたほうが
いいのではと思いますが、要件どおり、選択したセルの左隣から、上の罫線の下のセル範囲だけの
合計式をセットしました。

Sub Sample()
  Dim f As Range
  Dim c As Range
  
  Set f = Selection(1).Offset(, -1)  'Selectionでもいいけど念のため
  Set c = f
  
  Do While c.Borders(xlEdgeTop).LineStyle = xlNone And c.Row > 1
    Set c = c.Offset(-1)
  Loop
  
  f.Offset(, 1).Formula = "=SUM(" & c.Address & ":" & f.Address & ")"
    
End Sub

【73309】Re:罫線で囲まれた範囲の合計式を記入し...
お礼  ブーチー  - 12/12/19(水) 14:41 -

引用なし
パスワード
   ▼UO3 さん ありがとうございます。
思い通りに動いてくれました。

【73312】Re:罫線で囲まれた範囲の合計式を記入し...
発言  ブーチー  - 12/12/19(水) 20:36 -

引用なし
パスワード
   後から分からなくなった時のために、ちょっと修正したコードを載せておきます。

Option Explicit
Sub 罫線がある限り_罫線の間の合計()
  Dim scell As Range
  Dim acell As Range
  Dim c As Range
  Dim a As Range
  Dim s As Range
  Dim i As Integer
 
 Set scell = ActiveCell
 For i = 1 To 100
    If scell.Borders(xlEdgeBottom).LineStyle <> xlNone Then


      If scell.Borders(xlEdgeBottom).LineStyle <> xlNone Then
        Set acell = scell
      End If
      
      Set s = scell
      Set c = s
      
      Do While c.Borders(xlEdgeTop).LineStyle = xlNone And c.Row > 1
        Set c = c.Offset(-1)
      Loop
     
      s.Formula = "=SUM(" & c.Offset(, -1).Address & ":" & s.Offset(, -1).Address & ")"
     Else
       
     
     End If
     Set scell = scell.Offset(1)
     'scell.Select
  Next
End Sub


Sub 罫線の間の合計1() '合計の列に罫線有り
  Dim s As Range
  Dim c As Range
 
  Set s = Selection(1)
  Set c = s
  
  Do While c.Borders(xlEdgeTop).LineStyle = xlNone And c.Row > 1
    Set c = c.Offset(-1)
  Loop
 
  s.Formula = "=SUM(" & c.Offset(, -1).Address & ":" & s.Offset(, -1).Address & ")"
  
End Sub


Sub Sample() '数字の列に罫線有り
  Dim s As Range
  Dim c As Range
 
  Set s = Selection(1)
  Set c = Selection(1).Offset(, -1)  'Selectionでもいいけど念のため
 
  Do While c.Borders(xlEdgeTop).LineStyle = xlNone And c.Row > 1
    Set c = c.Offset(-1)
  Loop
 
  s.Formula = "=SUM(" & c.Address & ":" & s.Offset(, -1).Address & ")"
  
End Sub

1583 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free