下記のマクロを書いていますがエクセル95では多分うまくいったのですが
2000で動かすとエラーになります。
tuki = Sheets("mmm").Cells(5, 12).Text→ここでインデックスが有効範囲にありません
5行目の12列目には、200201データが入っています。書式は###です。
原因を教えてください。
なにをしているか記述の意味がわかれば教えてください。
Dim i, C_COUNT, folda, work, t
folda = "C:\test\"
tuki = Sheets("mmm").Cells(5, 12).Text
tuki = Val(Right(tuki, 2))
If tuki = 12 Then
tuki = 1
Else
tuki = tuki + 1
End If
tuki = Format(Str(tuki), "00")
Workbooks.Add
F_NAME = "Kei" + tuki + "tuki.XLS"
ActiveWorkbook.SaveAs Filename:=folda + F_NAME, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
No.1ベストアンサー
- 回答日時:
各行に意味を書いてみました。
L5の数値の下2桁の月の翌月をファイル名の一部としてBookを保存しようとしているみたいです。
>インデックスが有効範囲にありません のエラー
Sheet("mmm")のmmmはシート名と一致していますか。全角と半角で違っている可能性があります。
Excel2000でこの辺りが厳格になったのかもしれません。(自信なし)
シートでシートタブをクリックしてシート名を反転させてコピー。
それをこのコードのSheet("mmm")の『mmm』部分に貼り付ければうまくいくかもしれません。
後は、tukiの変数宣言が質問の中には見当たりません。
記述の意味
↓
'*** 配列の定義。みんなバリアント型になっている。これでもいいが、ちゃんと宣言したほうがいい。
'*** tukiについては、Dimがない? 書くなら、Dim tuki。これはバリアント型の必要あり
Dim i, C_COUNT, folda, work, t
'*** フォルダを定義
folda = "C:\test\"
'*** tukiはシート名mmmのL5の文字 = 200201
tuki = Sheets("mmm").Cells(5, 12).Text
'*** tuki = 1 。200201の右2桁『01』にして、数値にしている
tuki = Val(Right(tuki, 2))
'*** 翌月を求めている
If tuki = 12 Then
'*** 12月なら翌月は1月
tuki = 1
Else
'*** 12月以外ならtukiに1加算した月が翌月
tuki = tuki + 1
End If
'*** tukiを数値から前ゼロの文字に変えている
tuki = Format(Str(tuki), "00")
'*** 新規Bookを追加
Workbooks.Add
'*** F_NAMEは Kei02tuki.XLS になる
F_NAME = "Kei" + tuki + "tuki.XLS"
'*** Bookをfoldaにファイル名F_NAMEで保存している
ActiveWorkbook.SaveAs FileName:=folda + F_NAME, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
この回答への補足
早速の回答ありがとうございます。
もうひとつ教えてください。
下記のマクロで型が一致していませんがでます。
M_KAKOBA(count) = "Sheet" + i(3行目の5列には1が入っていま。)
何が原因でしょうか。
Dim i, C_COUNT, folda, work, tuki
For count = 1 To C_COUNT 'C_COUNT
Windows("test.xls").Activate
Sheets("aaa").Select
Cells(3, 5) = count
i = count
M_KAKOBA(count) = "Sheet" + i
No.2
- 回答日時:
M_KAKOBA(count) は文字列ですよね。
iは数値。多分、
M_KAKOBA(count) = "Sheet" & i
でしょう。文字列と文字列(または数値)の結合は & を使います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
特定のシートのみ再計算させな...
-
エクセルでブック内の倍率がバ...
-
エクセルで複数のシートに画像...
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
エクセル、特定のシートにパス...
-
ハイパーリンクでジャンプした...
-
エクセルのシー名を二段表示に...
-
特定の複数のシートに同じ処理...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルマクロでシート名を条...
-
EXCELの図形(テキストボックス)...
-
エクセルで、シートの名前を変...
-
Wordで差し込み印刷時に表示す...
-
エクセルの複数シートでのリン...
-
エクセル、別のシートの表をポ...
-
指定したシート名以外を非表示...
-
エクセルで目次に自動でページ...
-
accessへエクセルの複数のシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
名簿から複数シートの同じセル...
-
エクセルで、シートの名前を変...
-
Wordで差し込み印刷時に表示す...
-
エクセルの2つのシートを並び...
-
エクセル、特定のシートにパス...
-
エクセルのシート連番の振り直し
-
EXCELの図形(テキストボックス)...
-
Excelでマクロ設定したが反映さ...
-
エクセル 非表示のシートをハ...
-
ハイパーリンクでジャンプした...
-
アクセスからエクセルのシート...
-
エクセルのシー名を二段表示に...
-
エクセルでリンク貼り付けした...
-
エクセルの複数シートでのリン...
おすすめ情報