MW211 EXIT

devlog
ExcelVBA/キーブレイクの例
2019年08月09日
こんな感じ。
┌──────────────────────────────────────┐
│Dim y As Long                                                               │
│Dim oldキー1 As String, newキー1 As String                                  │
│Dim oldキー2 As String, newキー2 As String                                  │
│Dim 総計 As Long, 中計 As Long, 中計 As Long                                │
├──────────────────────────────────────┤
│y = 1                                                                       │
│総計 = 0                                                                    │
│Do Until テーブル.EOF                                                       │
│    '-----------------------------------------------------------------------│
│    中計 = 0                                                                │
│    '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -│
│    oldキー1 = テーブル.Fields("キー1").Value                               │
│    Do                                                                      │
│        '-------------------------------------------------------------------│
│        小計 = 0                                                            │
│        '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -│
│        oldキー2 = テーブル.Fields("キー2").Value                           │
│        Do                                                                  │
│            小計 = 小計 + テーブル.Fields("値").Value                       │
│            中計 = 中計 + テーブル.Fields("値").Value                       │
│            総計 = 総計 + テーブル.Fields("値").Value                       │
│            テーブル.MoveNext                                               │
│            If Not テーブル.EOF Then                                        │
│                newキー1 = テーブル.Fields("キー1").Value                   │
│                newキー2 = テーブル.Fields("キー2").Value                   │
│            End If                                                          │
│        Loop Until テーブル.EOF _                                           │
│                Or newキー1 <> oldキー1 _                                   │
│                Or newキー2 <> oldキー2                                     │
│        '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -│
│        シート.Cells(y, 1).Value = 小計                                     │
│        y = y + 1                                                           │
│        '-------------------------------------------------------------------│
│    Loop Until テーブル.EOF _                                               │
│            Or newキー1 <> oldキー1                                         │
│    '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -│
│    シート.Cells(y, 1).Value = 中計                                         │
│    y = y + 1                                                               │
│    '-----------------------------------------------------------------------│
│Loop                                                                        │
│シート.Cells(y, 1).Value = 総計                                             │
└──────────────────────────────────────┘
VBAの場合「OrElse」がないので、EOFとなった時に
直接「テーブル.Fields("キー1").Value」などをキーブレイク条件に記載すると
「テーブル.EOF(= True)」を飛び越えて参照しにいってしまうためエラーとなる。
この点に注意だ。 
分類:ExcelVBA