
以下のVBAマクロで突然エラーが出るようになってしまいました。
原因がわからず困っています。
どなたかご教授ください。
該当部分 :S = Range("B2").End(xlDown).Row
エラーMrg:実行時エラー'6': オーバーフローしました
----------マクロ文----------
Sub 部担コード読み替え()
Dim R_Count As Integer
Dim P_Sheet As String
Dim S As Integer
'データ取込用のファイルを開く
Workbooks(D_Book).Activate
Sheets("Data1").Select
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Range("B2").Select
S = Range("B2").End(xlDown).Row
Range("C2:C" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")"
Range("C1").Value = "部担コード"
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Columns("B:B").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Range("A1").Select
Sheets("Data2").Select
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Range("B2").Select
S = Range("B2").End(xlDown).Row
Range("C2:C" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")"
Range("C1").Value = "部担コード"
Columns("G:G").Select
Selection.Insert Shift:=xlToRight
Range("G2:G" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")"
Range("G1").Value = "キー"
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Columns("B:B").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("E:E").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Range("A1").Select
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示

No.3
- 回答日時:
No2です。
補足します。Cells(Rows.Count,2)の代わりにCells(Rows.Count, "B")と表記も出来ます。この法がわかり易いでしょう。

No.2
- 回答日時:
普通の対処
Dim S As Long
S = Cells(Rows.Count, 2).End(xlUp).Row
B列のエクセル最終行(Rows.Count)まで飛び、そこから上方向へデータを探します。データが空っぽなら1行目まで戻るのでS=1です。この方法の利点はデータ途中で空白があっても、そこで終わらずデータのある最終行まで探してくれる事です。
質問文のはB2からスタートし、下方向へデータの終わりを探しに行くものです。B2が偶然空白の場合は、空白の終わりを探しに行きます。元々データが空っぽで下の行も全部空白の場合、マクロは「空白の終わり」を探して延々とエクセルで用意されている最終行までデータを探しに行きます。つまりS=エクセルの最終行番号、確か100万程度。そこでオーバーフローしたのでしょう。
根本原因は、マクロが空っぽのデータに対応してないためです。IntegerをLongに修正すれば確かにオーバーフローは無くなります。この場合、C列に延々と下までゼロが入るのではないでしょうか?
No.1
- 回答日時:
Dim S As Integer
変数Sの宣言部分で整数型 (Integer)が宣言されています。
Integer型の変数では-32,768 ~ 32,767の範囲の整数値しか扱う事が出来ません。
S = Range("B2").End(xlDown).Row
この行はB2からCtrl+↓をした時の行番号を変数Sに格納します。
上記理由から、対象(B2からCtrl+↓したセル)の行番号が32768行以上になりませんか?
エクセルが取り扱える最大行数の1048576行まで対応するには
宣言部分の型を長整数型 (Long) にしてください。
以下の部分を修正する事で変数Sは-2,147,483,648 ~ 2,147,483,647の
範囲の値を取り扱えるようになります。
Dim S As Integer
↓
Dim S As Long
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) エクセルのVBAにショートカットキーの割り当て 3 2022/07/13 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
エクセルでアクセスのようにリ...
-
エクセルの関数で範囲のある数...
-
テキストデータのPDFをWordで開...
-
差し込み印刷で文字列が「0」と...
-
COUNTIFS関数で日付データを数...
-
エクセルで時間の合計ができません
-
PDFデータをエクセルにしたい
-
エクセルでプルダウン選択され...
-
SUMIFS関数の計算結果が違います
-
【マクロ】転記ツール。転記先...
-
差し込み印刷で、生年月日を昭...
-
エクセル マクロ 1行おきの...
-
アクセス97をエクセル97に...
-
wordデータを、excelに自動で入...
-
エクセルで、数字の文字数を揃...
-
斜めの貼り付け
-
エクセル条件付書式で指定の時...
-
エクセルで文字が白くなる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
テキストデータのPDFをWordで開...
-
差し込み印刷で文字列が「0」と...
-
エクセルの関数で範囲のある数...
-
SUMIFS関数の計算結果が違います
-
オブジェクトブラウザでデータ...
-
COUNTIFS関数で日付データを数...
-
エクセルでプルダウン選択され...
-
エクセルで時間の合計ができません
-
マクロ 行挿入で数式も反映す...
-
DBで改行が入っているデータをE...
-
斜めの貼り付け
-
0:00をカウントしない方法
-
Excel 条件付き書式で、別シー...
-
膨大なデーターの変更点のみ抽...
-
差し込み印刷で、生年月日を昭...
-
【マクロ】転記ツール。転記先...
-
エクセルで「データ」の「区切...
-
エクセルで列にあるユニークな...
おすすめ情報