
いつもどおり、顧客マスタより請求書発行作業をした所、エラーがでてデータを抽出してくれません。
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の値とする。。
みたいな命令なのでしょうか?
で、エラーは形式エラーだといいます。
全然何言っているのかわからない質問かもしれませんが、私にもどうやって説明すればいいのか分かりません。
ただ、モニターに出たままを伝えています。
こんなチンプンカンプンな質問でも、ご理解頂ける方がいらっしゃれば、是非助けてください!!
(;>_<;)ビェェン
No.2ベストアンサー
- 回答日時:
文面から察するに、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月のシートを指しています。偶然でしょうか)
遅くなって申しわけありません。
結局日付データに不備がありました。
しかし、9月のシートだと思っていましたが、不備があったのは8月のシート内のデータでした。
「/」で西暦・月・日を区切らなくてはならないデータに1部、「/」が抜けているデータが有りました。
for・・・でデータ件数分ループする事になっていましたが、
そのデータ以降がチェック出来ないために途中で処理をストップしてしまっていました。
現在、は正常に稼動しています。
どうもありがとうございます。
No.4
- 回答日時:
#2です。
先ほどの回答に補足。
もし、データに不備があっても、
スペースや数値だとエラーにはならないです。
たとえば「abc」とか「あいう」だとかが入ってしまっていると、
「実行時エラー '13': 型が一致しません」
が出るはず・・・このエラーではありませんでしたか?
データをチェックする際の参考までに。
No.3
- 回答日時:
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月までの売上のデータが入っているシート名が書かれています。
遅くなって申しわけ有りません。
追求してみると「/」で西暦・月・日を区切らなくてはならない日付データに1部、「/」が抜けているデータが有りました。
for・・・でデータ件数分ループし、条件に合うものを抽出する事になっていましたが、
そのデータ以降がチェック出来ないために途中で処理をストップしてしまっていました。
しかし、9月のデータだとばかり思っていたのが、8月のシート内のデータに不備がありました。
(なんてこったい (x_x;)シュン )
現在、は正常に稼動しています。
どうもありがとうございます
No.1
- 回答日時:
う~ん、ちょっと情報が少ないですね、
VBだけじゃなくて構成を教えて下さい。
(例えば、DBはオラクルでVBからエクセルで作表、とか)
1.請求書にUridateに該当する項目はありますか?(売上日のような気がしますが...)
2.請求書はエクセルで作成しているのでしょうか?
3.請求の元データはDBですか?それともベタ打ちのデータから?
それと、実際のエラーメッセージの文言は何でしょう?日付形式のエラーであれば、その項目の値が不正なだけでしょうが、元データがどこから持ってきているのか分からないと何とも言えないですね...
この回答への補足
1.#2さんへの補足に示しました。
2.そうです。エクセルのVBAです。
3.表化されているので多分、これがDBと言うものだと思います。
(表に直接打つわけではなく、ポップ画面がでて、テキスト欄に入力すると、データが入るようになっています)
エラーメッセージは#4さんの
「・・・”13”型が違います。」です!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) VBAのエラーが直せません 4 2023/06/12 22:10
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
ユーザーフォームのテキストボ...
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
チェックサムの実装方法について
-
VBの引数について
-
すみません、これってどういう...
-
excelマクロについて
-
Excelシートの読み込み
-
ExcelからSQLサーバへデータを...
-
C# でDataTableの更新を高速化...
-
多量のSUMIF式を軽くしたい
-
この行は既に別のテーブルに属...
-
GETはできるがPOSTができない、...
-
C# ソケット通信でデータ受信時...
-
VBA マクロ 集計の方法
-
CString型の文字列連結について
-
二分探索の平均探索回数
-
家計簿プログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
配列でデータが入っている要素...
-
メモ帳(テキストデータ)をExc...
-
ユーザーフォームのテキストボ...
-
特定のデータの抽出方法を教え...
-
二分探索の平均探索回数
-
EXCELVBAでSQLserverからデータ...
-
Accessで該当データにフラグを...
-
VBA 空白セルを削除ではない方...
-
この行は既に別のテーブルに属...
-
Excel VBAでのオートフィルター...
-
[C言語] コメント文字列を無視...
-
エクセルで2つの時系列のデー...
-
アクセス2000で画像データ...
-
CString型の文字列連結について
-
カンマからスラッシュに
-
VBにおいてフォーム間の変数の...
-
<VB>String→Object
おすすめ情報