質問編集履歴

1 「```」を挿入しました

onionion

onionion score 13

2018/08/17 12:31  投稿

VBA 値が変更された際に改行をするプログラムを作成したい
### 前提・実現したいこと
```
上からずらっと10000行ぐらいあるデータを保管しているエクセルがあります。(2行目まではタイトル)
K列(11行目)の値(文字です)が変更されたとき、変更された場所で改ページを
挿入するマクロを作成したいのですが、下記のマクロで対応すると改ページが挿入されたり
されなかったり、理由も不明で困っています。
そこで
①このマクロでなぜ改行が挿入されない時が存在するのかどうかを教えてください。
```  
②改良できる場所があれば教えてください。
### 発生している問題・エラーメッセージ
```
エラーはありません。改行がされません
```
### 該当のソースコード
```vba
```
vba
sub 改ページ()
   Dim i As Long
   Dim SaveKey As Variant
   
   
   'すべての改ページを削除
   Worksheets("シート名").ResetAllPageBreaks
   
   '1~2行目をタイトル行に設定
    Application.PrintCommunication = False
   With Worksheets("シート名").PageSetup
       .PrintTitleRows = "$1:$2"
       .PrintTitleColumns = ""
   End With
   
   i = 3
   SaveKey = Cells(i, 11).Value
 
   'K列の値が空白になるまでループ
   Do Until Len(Cells(i, 11).Value) = 0
   
       'キーが変わったかどうかをチェック
       If SaveKey <> Cells(i, 11).Value Then
           '改ページを挿入
           Worksheets("シート名").HPageBreaks.Add Before:=Cells(i, 1)
           'キーを更新
           SaveKey = Cells(i, 11).Value
       End If
       i = i + 1
   Loop
   
   '印刷プレビューを表示
   Worksheets("シート名").PrintPreview
End sub
```  
### 補足情報(FW/ツールのバージョンなど)
```
Windows7 32bit Excel2010での環境です。
シート名には実務で使用する際に使うブックのシートの名前が入ります。
シート名には実務で使用する際に使うブックのシートの名前が入ります。
```
  • VBA

    3642 questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る