- - PR -
エクセル エラ−13
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-09 06:51
こんにちは。私は、マクロの全くの初心者ですが、地元地区の役員を任せられたので、日々の収入支出表入力をダイアログより入力しようと本の例題を参考にしながら、只今、エクセルにチャレンジ中で、途中ですが、下記のプログラムを作成しました。ですが、「kigou = Application.WorksheetFunction.VLookup(Trim(Str(TextBox4)), Trim(Str(Worksheets("分類").Range("分分類"))), 3, False)」のところでエラ−になり、色々調べてもチンプンカンプンでわかりません。
誰か、どのようにしたら良いか教えて下さいませんか? Private Sub TextBox12_Click() '------------------------------------ '登録ボタンによる処理 '----------------------------------- 'シ−トの保護を解除する sheets("台帳").Unprotect '最下行に1行挿入する insertRow = Range("収入支出台帳").Rows.Count Range("収入支出台帳").Rows(insertRow).Insert Shift:=xlDown 'デ−タをセルに入力する '年月日 gousei = "平成" & TextBox1.Text & "年" & TextBox2.Text & "月" & TextBox3.Text & "日" Range("収入支出台帳").Cells(insertRow, 1) = gousei '分類 Range("収入支出台帳").Cells(insertRow, 7) = TextBox4.Text kigou = sheets("台帳").Range("収入支出台帳").Cells(insertRow, 2) bunnrui = sheets("台帳").Range("収入支出台帳").Cells(insertRow, 7) '記号分類 kigou = Application.WorksheetFunction.VLookup(Trim(Str(TextBox4)), Trim(Str(Worksheets("分類").Range("分分類"))), 3, False) '収入先、支出先 Select Case Range("収入支出台帳").Cells(insertRow, 4) Case kigou >= 12 Range("収入支出台帳").Cells(insertRow, 4) = TextBox5.Text Case 34 <= kigou.Text <= 35 Range("収入支出台帳").Cells(insertRow, 4) = TextBox5.Text Case Else Range("収入支出台帳").Cells(insertRow, 4) = "" End Select Select Case Range("収入支出台帳").Cells(insertRow, 5) Case kigou >= 12 Range("収入支出台帳").Cells(insertRow, 5) = "" Case 34 <= kigou.Text <= 35 Range("収入支出台帳").Cells(insertRow, 5) = "" Case Else Range("収入支出台帳").Cells(insertRow, 5) = TextBox5.Text End Select '金額 Range("収入支出台帳").Cells(insertRow, 3) = TextBox6.Text '収入金額、支出金額 Select Case Range("収入支出台帳").Cells(insertRow, Case kigou >= 12 Range("収入支出台帳").Cells(insertRow, = TextBox6.Text Case 34 <= kigou.Text <= 35 Range("収入支出台帳").Cells(insertRow, = TextBox6.Text Case Else Range("収入支出台帳").Cells(insertRow, = "" End Select Select Case Range("収入支出台帳").Cells(insertRow, 9) Case kigou >= 12 Range("収入支出台帳").Cells(insertRow, 9) = "" Case 34 <= kigou.Text <= 35 Range("収入支出台帳").Cells(insertRow, 9) = "" Range("収入支出台帳").Cells(insertRow, 9) = TextBox6.Text End Select '備考 Range("収入支出台帳").Cells(insertRow, 6) = TextBox7.Text 'シ−トを保護する sheets("台帳").Protect 'ダイアログを閉じる | ||||||||
|
投稿日時: 2008-04-09 08:23
なんとなくですが(あくまでも参考で。。)
を以下のように狭めた方がよいと思います。
あとRangeで取得しているのをStrとTrimしているのがおかしい気がしますが。。 (kigouの型と使い方も気になりますが(上の方で意味なく使用されていますが。。。)) | ||||||||
|
投稿日時: 2008-04-09 09:31
こんんちは。
表題の「エラー13」とは、エラー番号のことですよね? VBAでこのエラー番号は 「データが無効です。 」 となっていますので、indigo-xさんのおっしゃるようにVLookup関数で使用するそれぞれの値(indigo-xさんのコードではtmp1、tmp2)が意図しているものかを検証してみてはどうでしょう。 あと、この会議室ではこの質問は無関係・・・とは言いませんが最適とも言えません。 ・モーグ こちらのほうが適切な回答が得られるかも。 | ||||||||
|
投稿日時: 2008-04-09 10:55
デフォルト プロパティという概念があるので Excel.Range を取得していることにはならないとは思います。 まあデフォルト プロパティであってもおかしいという点は事実ですが。
ですね。 解決への早道に違いないと思います。 自己解決できることも多いでしょう。 この手のご質問を見るといつも疑問に感じることがあります。 実際どの処理でエラーが起こっているのかを何故確認しないのでしょうか? 1 行にいくつも処理が入っていれば切り分けが難しくなるのは当たり前です。 それを敢えてその形のまま検証するという行為は、(当たりくじを引きたい前提で) ハズレくじを確実に判別できるチャンスがある (自己解決できるチャンスがある) のに敢えてそのままくじに挑戦しているようなものです。 そしてその状況で 『当たりくじはどこですか?』 と周りに質問していることになります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-04-09 12:39
ことわざを「汝足下を掘れ、バグを必ず掘り当てるだろう」 | ||||||||
|
投稿日時: 2008-04-09 21:56
じゃんぬさん、indigo-xさん
いや、ほら、
ということなので、デバッグができる人とは限らないじゃないですか(^-^; (^-^; うちの妻も、開発者じゃないですけど、Access くらいなら何とか使っていますよ。でも、開発者ではないので、開発者に求めるようなことを求めてもできません。 もし、開発者ではないのなら、ここは、ちょっと敷居が高いと思いますよ>質問者さん 「OK Wave」とか、「答えてねっと」とかを勧めます。 |
1