Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1774 / 13645 ツリー ←次へ | 前へ→

【72022】実行時エラー'9' インデックスが有効ではありません kazu 12/5/17(木) 9:39 質問[未読]
【72023】Re:実行時エラー'9' インデックスが有効で... Abebobo 12/5/17(木) 10:00 発言[未読]
【72026】Re:実行時エラー'9' インデックスが有効で... kazu 12/5/17(木) 12:49 発言[未読]
【72024】Re:実行時エラー'9' インデックスが有効で... kanabun 12/5/17(木) 10:01 発言[未読]
【72025】Re:実行時エラー'9' インデックスが有効で... kanabun 12/5/17(木) 10:11 発言[未読]
【72027】Re:実行時エラー'9' インデックスが有効で... kazu 12/5/17(木) 14:26 質問[未読]
【72028】Re:実行時エラー'9' インデックスが有効で... Abebobo 12/5/17(木) 14:57 発言[未読]
【72029】Re:実行時エラー'9' インデックスが有効で... kazu 12/5/17(木) 16:56 お礼[未読]
【72030】Re:実行時エラー'9' インデックスが有効で... Abebobo 12/5/17(木) 17:06 発言[未読]

【72022】実行時エラー'9' インデックスが有効で...
質問  kazu  - 12/5/17(木) 9:39 -

引用なし
パスワード
   何が原因でエラーになっているのかが分かりません。
皆様のお力添えを貸してください。

「資料作成.xls」を開いて
単価を自動計算しシート名を日付"yyyymmdd"へ変更するvbaマクロの作成します。
僕は下記のコードを作成しました。

Sub Macro5()
'
Macro5 Macro
'

  Workbooks.Open Filename:= _
    "S:\Documents and Settings\administrator\デスクトップ\資料作成.xls"

  Dim intDataCnt As Long
    
    intDataCnt = 2
 
  Do While Range("B" & intDataCnt).Value <> ""
 
     If Range("C" & intDataCnt).Value <> "" Then
     Range("D" & intDataCnt).Formula = Range("E" & intDataCnt).Value / Range("C" & intDataCnt).Value
     
      
     End If
 
     intDataCnt = intDataCnt + 1
    
 
  Loop
    
  ActiveCell.FormulaR1C1 = "=TODAY()"
  Selection.NumberFormatLocal = "yyyymmdd"
    
  
★Sheets("Sheet1").Select
  Sheets("Sheet1").Name = Format(Date, "yyyymmdd")
    
    
End Sub


「★Sheets("Sheet1").Select
   Sheets("Sheet1").Name = Format(Date, "yyyymmdd")」
この部分でエラーになり
「実行時エラー'9' インデックスが有効ではありません」
と出てきます。
Sheetの名前は「Sheet1」となっているのにこのようなエラーになってしまうのはなぜなんでしょう。

<補足>数量はC列、単価はD列、合価はE列、すべて2行目から入力します。

【72023】Re:実行時エラー'9' インデックスが有効...
発言  Abebobo  - 12/5/17(木) 10:00 -

引用なし
パスワード
   Sheet1 が見つからないエラーかな?

マクロが書いてあるブックから、もうひとつのブックを開いていますよね。

Sheets("Sheet1") の前にブックを指定する癖をつけたほうが良いと思います。

【72024】Re:実行時エラー'9' インデックスが有効...
発言  kanabun  - 12/5/17(木) 10:01 -

引用なし
パスワード
   ▼kazu さん:

> Sheets("Sheet1").Select

>この部分でエラーになり
>「実行時エラー'9' インデックスが有効ではありません」
>と出てきます。
そしたら素朴には "Sheet1" という名前のシートが無いから、
と考えたくなりますけどねェ。
どうしてなんでしょ

【72025】Re:実行時エラー'9' インデックスが有効...
発言  kanabun  - 12/5/17(木) 10:11 -

引用なし
パスワード
   あと本題からは外れますが、
>  ActiveCell.FormulaR1C1 = "=TODAY()"
>  Selection.NumberFormatLocal = "yyyymmdd"
この書き方が気になります。
ActiveCell がすでにデータの書かれたセルにあったら、という
心配は無用ですか?

>「資料作成.xls」を開いて
このとき 「資料作成.xls」がActiveWorkbook になりますよね?
その Sheet1 シートをアクティブにするかはコードで書いてないから、
ActiveCellが 別のシートのセルである可能性もありますねぇ

というか、ActiveCellとか Selectionとかは使わないで範囲を指定
するのが無難です。
(よこみちでした)

【72026】Re:実行時エラー'9' インデックスが有効...
発言  kazu  - 12/5/17(木) 12:49 -

引用なし
パスワード
   ▼Abebobo さん:

開いたブックはマクロが動くブックに指定されていないということなのでしょうか?


>Sheet1 が見つからないエラーかな?
>
>マクロが書いてあるブックから、もうひとつのブックを開いていますよね。
>
>Sheets("Sheet1") の前にブックを指定する癖をつけたほうが良いと思います。

【72027】Re:実行時エラー'9' インデックスが有効...
質問  kazu  - 12/5/17(木) 14:26 -

引用なし
パスワード
   すみません。
自分でいろいろいじくって結局元の状態に戻してもう一度作動させてみたら今度は
「実行時エラー'1004'
アプリケーション定義、またはオブジェクト定義のエラーです。」
にエラーが変わってしまいました。

自分でも訳が分かりません。。。

【72028】Re:実行時エラー'9' インデックスが有効...
発言  Abebobo  - 12/5/17(木) 14:57 -

引用なし
パスワード
   ブックをいっぱい開くと、どのブックのどのシートとはっきりさせておかないと
>自分でも訳が分かりません。。。
となりやすいです。私もしょっちゅうです。

Sub Macro5()

Dim My_Wb    As Workbook
Dim Data_Wb   As Workbook
Dim intDataCnt As Long

Set My_Wb = ThisWorkbook
Set Data_Wb = Workbooks.Open(Filename:= _
    "S:\Documents and Settings\administrator\デスクトップ\資料作成.xls")

intDataCnt = 2

With Data_Wb.Sheets("何ですか?")

 Do While .Range("B" & intDataCnt).Value <> ""
 
  If .Sheets("何ですか?").Range("C" & intDataCnt).Value <> "" Then
     .Range("D" & intDataCnt).Formula = .Range("E" & intDataCnt).Value / Range("C" & intDataCnt).Value
  End If

  intDataCnt = intDataCnt + 1
  
  Loop
 
End With

'ここからはマクロが書いてあるブックなのかなぁ?
'なら、
My_Wb.Activate

ActiveCell.FormulaR1C1 = "=TODAY()"
  Selection.NumberFormatLocal = "yyyymmdd"
  
 
My_Wb.Sheets("Sheet1").Select
  Sheets("Sheet1").Name = Format(Date, "yyyymmdd")
  
  
End Sub

まだ、いろいろ直したほう良いかもしてませんが、取り急ぎ

【72029】Re:実行時エラー'9' インデックスが有効...
お礼  kazu  - 12/5/17(木) 16:56 -

引用なし
パスワード
   すみません。。。

頭を冷やしてもう一度一からかんがえ直してみます。

ご迷惑をお掛けしました。

【72030】Re:実行時エラー'9' インデックスが有効...
発言  Abebobo  - 12/5/17(木) 17:06 -

引用なし
パスワード
   > 
>  If .Sheets("何ですか?").Range("C" & intDataCnt).Value <> "" Then
>     .Range("D" & intDataCnt).Formula = .Range("E" & intDataCnt).Value / Range("C" & intDataCnt).Value

If .Range("C" & intDataCnt).Value <> "" Then
     .Range("D" & intDataCnt).Formula = .Range("E" & intDataCnt).Value / .Range("C" & intDataCnt).Value


修正

1774 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free