OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセル2000マクロデバッグエラー

  • すぐに回答を!
  • 質問No.247008
  • 閲覧数209
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

下記のマクロを書いていますがエクセル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
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル13

ベストアンサー率 68% (791/1163)

各行に意味を書いてみました。
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
補足コメント
noname#72697

早速の回答ありがとうございます。
もうひとつ教えてください。
下記のマクロで型が一致していませんがでます。
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
投稿日時 - 2002-04-04 21:15:22
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

M_KAKOBA(count) は文字列ですよね。iは数値。 多分、  M_KAKOBA(count) = "Sheet" & i でしょう。文字列と文字列(または数値)の結合は & を使います。
M_KAKOBA(count) は文字列ですよね。iは数値。

多分、

 M_KAKOBA(count) = "Sheet" & i

でしょう。文字列と文字列(または数値)の結合は & を使います。

このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ