###前提・実現したいこと
閲覧いただきありがとうございます。
現在エクセルでマクロを作成しているのですが、
N列に特定の数字(1,4,6,38など)が羅列されており、その数字を読み込みその下にN列の数字-1行を追加するというマクロをくんでいるのですが、
160行くらいあるなかの100行を超えたあたりから行数が追加されなくなる場合があるといった症状となっています。
原因はマクロはあまりIf-Elseを多用すると上手く動かないことがあるとの記事をみたことがあるのですがそれかと思っているのですが、Select文のほうがパフォーマンスが良いでしょうか?
ソースからこれはいけないといったご指摘があったらアドバイスを頂きたいです。
宜しくお願い致します。
###該当のVBA
Sub InsertRow() Dim i As Integer Dim intStart As Integer Dim intCol As Integer Dim strSheetName As Worksheet Set strSheetName = ActiveSheet intStart = 2 '開始する行数 intCol = 14 '数字を読み込む列 i = intStart '追加する行数の先頭位置 Dim j As Integer '追加する行数の中に既に空白行があったらその行数分 msg_1 = "N列に指定されている員数-1行を追加しますか" If MsgBox(msg_1, vbYesNo) = vbNo Then Exit Sub '行を追加してよいかのポップアップを出す Application.ScreenUpdating = False '処理終了まで画面表示はそのまま Do While i < 10000 '読み込む行 If Cells(i, intCol).Value = "" Then 'セルに何も記入されていない時は次の行を読み込む 'Exit Do i = i + 1 Else If Cells(i, intCol).Value = 0 Then 'セルに0が記入されているときは次の行を読み込む i = i + 1 Else If Cells(i, intCol).Value = 1 Then 'セルの値が1の時は行数を追加する必要がない i = i + 1 Else Dim cbl As Range '空白行数を調べる際の範囲を指定 Set cbl = Range(Cells(i + 1, intCol), Cells(i + Cells(i, intCol).Value, intCol)) '空白行を調べる際の範囲 j = WorksheetFunction.CountBlank(cbl) '空白行の行数分 Range(Rows(i + 1), Rows(i + Cells(i, intCol).Value - 1 - j)).Select 'i=選択されている行の次の行から指定されたN列の追加行数を選択した状態 'jを引くことにより空白行数を含めたN列の値となる Selection.Insert '選択された行数分追加 i = i + Cells(i, intCol).Value '次の指定するN列 End If End If End If Loop Application.ScreenUpdating = True End Sub
###補足情報(言語/FW/ツール等のバージョンなど)
Office2013
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/12 07:38