重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

いつもどおり、顧客マスタより請求書発行作業をした所、エラーがでてデータを抽出してくれません。
VBA全く分からないので、任意のものなのか、関数なのか分かりませんが、エラーが出たところをデバック表示すると、以下のようでした。

direct = 1
K = 1
m = prtModpoint
if Workbooks(ファイル名).Worksheets(シート名),Cells(m + 2,8) = 20 Then
for i = 3 to lastRow Step direct
Uridate = ZdataArea.Cells(i,1).Value ←ここの行でデータに不備が有るといってエラーになりました。

なんだか日付が絡んでいるように思えるのですが、ZdataArea・・・のデータをUridateの値とする。。
みたいな命令なのでしょうか?
で、エラーは形式エラーだといいます。

全然何言っているのかわからない質問かもしれませんが、私にもどうやって説明すればいいのか分かりません。
ただ、モニターに出たままを伝えています。
こんなチンプンカンプンな質問でも、ご理解頂ける方がいらっしゃれば、是非助けてください!!
(;>_<;)ビェェン

A 回答 (4件)

文面から察するに、Excelシートからデータを持ってきている、


ということでいいでしょうか?
(違っていたらすみません)

ZdataAreaというのがどこを指しているのか
文面からは分からないのですが、
おそらくデータのあるシート・・・なのでしょう。
指定されたセル内のデータに不備があるのだと思います。

以下、かなり憶測がまざっているのですが、
・Uridate は日付型のデータが入る
(どこかに Dim Uridate As Date と宣言されていますか?)
・ZdataAreaシートの1列目にはかならず日付が入ることになっている

という前提で作られていて、ZdataAreaシートの1列目のi行目に
日付以外の文字データが入ってしまっているのではないでしょうか?
日付が入ってくるはずなのに、日付でないデータが入ってしまって、
これじゃUridateに代入できないよ、と言っているのです。


データの不備ともいえますが、日付以外のデータが入ってしまった場合の考慮漏れ、とも取れますね。
(この場合、データが日付型かどうか判断して日付型でなければ
 代わりの処理を行うようにするのが定石だとおもいますが・・・)

この回答への補足

おっしゃるとおり、エクセルでのVBAです。
売上データは表形式でデータベースになっていると思います。

9月の売上の請求書を出したいのですが、出ない。
でも、売上を10月にすると出るんです。

後、imogasiさんのご指摘により、探しました。

Set ZdataArea = Workbooks(ファイル名).Worksheets(ZprtPrmMon)Rang(A1)

そして、ZprtPrmMonはどこで定義されているかと言うと、その数行上で、

ZprtPrmMon = Workbooks(ファイル名).Worksheets(シート名).Cells(i + 1.4)

で、このCells(行.列)だと思うのですが、このシートの4列目には、1月~12月までの売上のデータが入っているシート名が書かれています。
各月のシート名の一覧の1行上のセルに、「6」という数字が入っています。
最初は一覧の数かな?と、思いましたが、13か月分のシート名が書いてあったのでそうではなさそうです、
(しかし、ちょうど6番目が出ない9月のシートを指しています。偶然でしょうか)

補足日時:2004/09/17 19:49
    • good
    • 0
この回答へのお礼

遅くなって申しわけありません。
結局日付データに不備がありました。
しかし、9月のシートだと思っていましたが、不備があったのは8月のシート内のデータでした。
「/」で西暦・月・日を区切らなくてはならないデータに1部、「/」が抜けているデータが有りました。
for・・・でデータ件数分ループする事になっていましたが、
そのデータ以降がチェック出来ないために途中で処理をストップしてしまっていました。
現在、は正常に稼動しています。
どうもありがとうございます。

お礼日時:2004/10/05 09:54

#2です。


先ほどの回答に補足。

もし、データに不備があっても、
スペースや数値だとエラーにはならないです。
たとえば「abc」とか「あいう」だとかが入ってしまっていると、
「実行時エラー '13': 型が一致しません」
が出るはず・・・このエラーではありませんでしたか?

データをチェックする際の参考までに。

この回答への補足

そうです!!
そのエラーです!
そのものです!!!
(゜゜)(。。)(゜゜)(。。)(゜゜)(。。)

補足日時:2004/09/17 19:47
    • good
    • 0

Set ZdataArea=Worksheets("???")


と言う行がどこかにありますか。
???が我等が見えるシート名で、そのシートのA列3行目から以下で、日付でないデータが入っていますか。
皆さん日付にこだわっっておられるが、しかしエクセルでは日付は数でしかなく、Uridateには、文字でもスペースでも1旦なんでも入るように思いますが。
OKWEBなどで、コード全部を出せない、かつ文章のやりとりで、コーディングのデバッグはやりづらいとおもいますよ。

この回答への補足

有りました!
まずはこうです。
Set ZdataArea = Workbooks(ファイル名).Worksheets(ZprtPrmMon)Rang(A1)

そして、ZprtPrmMonはどこで定義されているかと言うと、その数行上で、

ZprtPrmMon = Workbooks(ファイル名).Worksheets(シート名).Cells(i + 1.4)

で、このCells(行.列)だと思うのですが、このシートの4列目には、1月~12月までの売上のデータが入っているシート名が書かれています。

補足日時:2004/09/17 19:39
    • good
    • 0
この回答へのお礼

遅くなって申しわけ有りません。
追求してみると「/」で西暦・月・日を区切らなくてはならない日付データに1部、「/」が抜けているデータが有りました。
for・・・でデータ件数分ループし、条件に合うものを抽出する事になっていましたが、
そのデータ以降がチェック出来ないために途中で処理をストップしてしまっていました。
しかし、9月のデータだとばかり思っていたのが、8月のシート内のデータに不備がありました。
(なんてこったい (x_x;)シュン )
現在、は正常に稼動しています。
どうもありがとうございます

お礼日時:2004/10/05 09:56

う~ん、ちょっと情報が少ないですね、


VBだけじゃなくて構成を教えて下さい。
(例えば、DBはオラクルでVBからエクセルで作表、とか)

1.請求書にUridateに該当する項目はありますか?(売上日のような気がしますが...)
2.請求書はエクセルで作成しているのでしょうか?
3.請求の元データはDBですか?それともベタ打ちのデータから?

それと、実際のエラーメッセージの文言は何でしょう?日付形式のエラーであれば、その項目の値が不正なだけでしょうが、元データがどこから持ってきているのか分からないと何とも言えないですね...

この回答への補足

1.#2さんへの補足に示しました。
2.そうです。エクセルのVBAです。
3.表化されているので多分、これがDBと言うものだと思います。
(表に直接打つわけではなく、ポップ画面がでて、テキスト欄に入力すると、データが入るようになっています)

エラーメッセージは#4さんの
「・・・”13”型が違います。」です!

補足日時:2004/09/17 19:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!