[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Vlookupがデバック』(k)
Sub yyy()
Application.ScreenUpdating = False
ActiveSheet.Protect DrawingObjects:=False, Contents:=False, Scenarios:=False
Dim myy, myi, myr Dim m As Variant, k As Variant, y As Long, w As Long, i As Long
' k = Range("c2").Value
m = Application.InputBox("検索NOを入力してください")
' k = m
If VarType(m) = vbBoolean Then MsgBox "キャンセルされました" Exit Sub Else End If With Worksheets("Sheet1") myy = Application.WorksheetFunction.VLookup(m, .Range("c10:e135"), 2, False) myi = Application.WorksheetFunction.VLookup(m, .Range("c10:e135"), 3, False) .Range("d2").Value = myy .Range("g2").Value = myi + 1 .Range("c2").Value = k
MsgBox m & "が入力されました"
End With
myr = InputBox("メーカ名確認後数量を入力してください!")
i = m + 10
If IsNumeric(myr) Then Cells(i, 5).Value = Cells(i, 5) + myr
Else MsgBox "計算できない値です" End If MsgBox "「NO」にて入力してください" If IsNumeric(myr) Then y = InputBox("年齢を入力 NO 9〜13") Cells(i, y).Value = Cells(i, y) + myr w = InputBox("来訪動機 NO 14〜22") Cells(i, w).Value = Cells(i, w) + myr End If ' Application.ScreenUpdating = True ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
c10:e135までの範囲でApplication.WorksheetFunction.VLookupを 使いたいのですが デバッグになりますどこがおかしいのか 教えて頂きたいのですが 宜しくお願いします
検索値がヒットしないのでエラーになっている・・・のではないか?
そんなハズはないと云うことなら、検索値のデータ型が、合っていないのだと思います。 つまり、数値であるべきなのに数字(文字の一種)が入った・・・のではないか?
>m = Application.InputBox("検索NOを入力してください") m = Application.InputBox("検索NOを入力してください", Type:=1) ↑ 数値型を指定してみる
(半平太) 2013/03/28(Thu) 22:27
エクセル上で#N/Aや#VALUE!等のエラーを返すシート関数を WorkSheetFunction.関数 と、 WorksheetFunctionクラスのものを使うと、エラー時に、実行時エラーで中断する。 そのような関数を使う場合は、Applicationクラスのものを使う。そうすると実行時エラーにはならず 「エラー値」がかえってくるので、それを判定する。 エラー値が返っても受けられるように、受ける変数はVariant型にしておく。 (アップされたコードではVariant型になっているのでOK)
myy = Application.VLookup(m, .Range("c10:e135"), 2, False) If IsError(myy) Then MsgBox "検索値が見付かりません" Exit Sub End If myi = Application.VLookup(m, .Range("c10:e135"), 3, False) If IsError(myi) Then MsgBox "検索値が見付かりません" Exit Sub End If
ところで、変数記述はプロシジャの最初にまとめておいた方が見やすい。 それと、 Dim m As Variant, k As Variant, y As Long, w As Long, i As Long このように、ちゃんと 型を明示した記述をしているのに Dim myy, myi, myr というのも混在しているのが、ちょっとちぐはぐな感じはするね。
あと、InputBox関数とは別に、半平太さんのアドバイスの InputBoxメソッドもある。 こちらのほうは、数値と指定すると、数値以外の入力を、メソッドの中で、はじくので マクロ側で、数字だったかどうかのチェックをすることが不要になるよ。
(ぶらっと)
(半平太)さん、(ぶらっと)さん できました ありがとうございます (K)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.