Excel VBA質問箱 IV

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

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


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

【69700】定義のエラーがわかりません sousou 11/8/23(火) 1:45 質問[未読]
【69701】Re:定義のエラーがわかりません かみちゃん 11/8/23(火) 5:11 発言[未読]
【69720】Re:定義のエラーがわかりません sousou 11/8/23(火) 21:17 お礼[未読]
【69702】Re:定義のエラーがわかりません Abebobo 11/8/23(火) 9:20 発言[未読]
【69721】Re:定義のエラーがわかりません sousou 11/8/23(火) 21:23 お礼[未読]

【69700】定義のエラーがわかりません
質問  sousou  - 11/8/23(火) 1:45 -

引用なし
パスワード
   VBA初めて数週間のビギナーです。

下記コードのどこが間違っているのか教えてください。

実行したいのは、
シフトのシートの曜日のセル(3列おきにある)が日以外なら、
平日のシートのコピーを作りなさい、
それ以外(曜日が日)なら、
日祝のシートのコピーを作りなさい、です。
いろいろ変えてみても、
「実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです」が表示され、デバッグすると必ずIfからの行が黄色になります。
ちなみに、.fomulaR1C1を消してもつけても同じエラーが返ってきます。
別にfor nextを使ったマクロから、callで上記を実行して、1ヶ月分のシートを作成しようと思っています。

Dim i As Integer
Dim j As Integer
  j = 3 * i - 1
If ThisWorkbook.Worksheets("シフト").Cells(2, j).fomulaR1C1 <> "日" Then
    Sheets("平日").Copy before:=Sheets(1)
    ActiveSheet.Name = i & "日"
    Else
    Sheets("日祝").Copy before:=Sheets(1)
    ActiveSheet.Name = i & "日"
    End If

どうぞ、よろしくお願いいたします。

【69701】Re:定義のエラーがわかりません
発言  かみちゃん E-MAIL  - 11/8/23(火) 5:11 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>「実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです」が表示され、デバッグすると必ずIfからの行が黄色になります。


Dim i As Integer
Dim j As Integer
j = 3 * i - 1

のコードの上は、どうなっているのか知りたいところですが、
もし、

Sub Macro1()
  Dim i As Integer
  Dim j As Integer
  j = 3 * i - 1

というようになっているのであれば、

  j = 3 * i - 1

は、どのような値が得られていると思いますか?

ThisWorkbook.Worksheets("シフト").Cells(2, j)

というコードにするのであれば、
この時点で、変数 j の値は、列番号を示す値でなければいけません。

たぶん、j の値が 0(ゼロ)以下になっているのではないでしょうか?

たとえば、
ThisWorkbook.Worksheets("シフト").Cells(2, -1)
とは、具体的にどこのセルなのですか?わかりません。

ということで、Excelがエラーメッセージを出しています。

【69702】Re:定義のエラーがわかりません
発言  Abebobo  - 11/8/23(火) 9:20 -

引用なし
パスワード
   >VBA初めて数週間のビギナーです。

ということで
'.FormulaR1C1 <> "日" 、 セルの式が "日" じゃなかったら
'って珍しいです。
'.Value <> "日" , 直接入力 or 数式等で出た値 が "日" ・・・かな

'>for nextを使ったマクロから
'j = 3 * i - 1 を使っている理由は 3列とびで処理をしたいからですか?

Sub test()

Dim i    As Long

With ActiveSheet
 For i = 2 To 93 Step 3 '3とび
  .Cells(2, i).Select
  Stop         '動きの確認用一時停止
 Next i
End With

End Sub

'こんな使い方もあります

【69720】Re:定義のエラーがわかりません
お礼  sousou  - 11/8/23(火) 21:17 -

引用なし
パスワード
   かみちゃんさん
早速の回答ありがとうございます。
変数の定義の仕方が問題ということですね。
このコードの前は、ご指摘の通りの書き方をしていたので、
エラーになるのですね。
別のアプローチ考えます。
貴重なお時間頂きありがとうございました。

【69721】Re:定義のエラーがわかりません
お礼  sousou  - 11/8/23(火) 21:23 -

引用なし
パスワード
   Abeboboさん、早速の回答ありがとうございます。
ご指摘のプロパティをValueに変えてみましたが同じエラーでした。
教えていただいたコード、
ビギナーにとってはまずはコードを理解するところからです。
すばらしく簡潔ですね。
頑張ってみます。
貴重なお時間頂き、ありがとうございました。

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