- PR -

エクセル エラ−13

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/04/09
投稿数: 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
  'ダイアログを閉じる
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-04-09 08:23
なんとなくですが(あくまでも参考で。。)

コード:

kigou = Application.WorksheetFunction.VLookup(Trim(Str(TextBox4)),
    Trim(Str(Worksheets("分類").Range("分分類"))), 3, False)



を以下のように狭めた方がよいと思います。

コード:

 tmp1 = Trim(Str(TextBox4))
 tmp2 = Trim(Str(Worksheets("分類").Range("分分類")))
 kigou = Application.WorksheetFunction.VLookup(tmp1, tmp2, 3, False)



あとRangeで取得しているのをStrとTrimしているのがおかしい気がしますが。。
(kigouの型と使い方も気になりますが(上の方で意味なく使用されていますが。。。))
nakaP
大ベテラン
会議室デビュー日: 2005/09/27
投稿数: 138
お住まい・勤務地: 高知
投稿日時: 2008-04-09 09:31
こんんちは。

表題の「エラー13」とは、エラー番号のことですよね?
VBAでこのエラー番号は
「データが無効です。 」
となっていますので、indigo-xさんのおっしゃるようにVLookup関数で使用するそれぞれの値(indigo-xさんのコードではtmp1、tmp2)が意図しているものかを検証してみてはどうでしょう。

あと、この会議室ではこの質問は無関係・・・とは言いませんが最適とも言えません。
モーグ
こちらのほうが適切な回答が得られるかも。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-09 10:55
引用:

indigo-xさんの書き込み (2008-04-09 08:23) より:

あとRangeで取得しているのをStrとTrimしているのがおかしい気がしますが。。


デフォルト プロパティという概念があるので Excel.Range を取得していることにはならないとは思います。 まあデフォルト プロパティであってもおかしいという点は事実ですが。

引用:

以下のように狭めた方がよいと思います。


ですね。 解決への早道に違いないと思います。 自己解決できることも多いでしょう。

この手のご質問を見るといつも疑問に感じることがあります。 実際どの処理でエラーが起こっているのかを何故確認しないのでしょうか? 1 行にいくつも処理が入っていれば切り分けが難しくなるのは当たり前です。 それを敢えてその形のまま検証するという行為は、(当たりくじを引きたい前提で) ハズレくじを確実に判別できるチャンスがある (自己解決できるチャンスがある) のに敢えてそのままくじに挑戦しているようなものです。 そしてその状況で 『当たりくじはどこですか?』 と周りに質問していることになります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-04-09 12:39
引用:

じゃんぬねっとさんの書き込み (2008-04-09 10:55) より:

ですね。 解決への早道に違いないと思います。 自己解決できることも多いでしょう。

この手のご質問を見るといつも疑問に感じることがあります。.....




ことわざを「汝足下を掘れ、バグを必ず掘り当てるだろう」
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-04-09 21:56
じゃんぬさん、indigo-xさん

いや、ほら、
引用:

私は、マクロの全くの初心者ですが、地元地区の役員を任せられたので、日々の収入支出表入力をダイアログより入力しようと本の例題を参考にしながら、只今、エクセルにチャレンジ中で、途中ですが、下記のプログラムを作成しました。


ということなので、デバッグができる人とは限らないじゃないですか(^-^; (^-^;

うちの妻も、開発者じゃないですけど、Access くらいなら何とか使っていますよ。でも、開発者ではないので、開発者に求めるようなことを求めてもできません。


もし、開発者ではないのなら、ここは、ちょっと敷居が高いと思いますよ>質問者さん
「OK Wave」とか、「答えてねっと」とかを勧めます。
1

スキルアップ/キャリアアップ(JOB@IT)