VBA変数をFunction.VLookupの戻り値から得たいのですが、
下記の記述だと「実行時エラー 1004 worksheetfunctionクラスの…」が出てしまいます。
Dim X As Long, i As Long
Dim t3 As Variant
X = 2 'Loop行数
i = 2 'Loop行数
Do Until Cells(i, 4).Value = ""
t3 = Application.WorksheetFunction.VLookup(Cells(X, 4) & 9, Sheets("時刻表").Columns("A:C"), 2, 0) '開始時刻
時刻表シート
A B C
検索値 開始 完了
79 18:30 20:30
89 18:30 20:30
99 21:30 22:30
109 22:30 23:30
・
・
・
ちなみにセルにvalueで返してみると反映されエラーにはならないです。
VBA素人で申し訳ありませんがご教授お願い致します。
No.2ベストアンサー
- 回答日時:
No.1です。
> そもそも「Application.WorksheetFunction.VLookup」で得た値を変数に置き換えること自体が無理なのでしょうか?
おかしいですね。
私の環境(Excel2016)では、質問者様の書き方では、t3でも、cellsでも当該エラーが発生します。
No.1の書き方だと、t3でも、cellsでも当該エラーは発生せず、正常に動作します。
※Cells(X, 4)には整数値が入力されているという前提です。
何度も考えてくださりありがとうございます。
ご回答くださったことを元に見直していたところ、そもそもの間違いに気づくことができました。
Cells(●,●).Valueで見直し確認していた時点ではCells(X, 4)に数値が反映されていたのでエラーにならず、t3へ変数として置き換えようとしていた時点ではCells(X, 4)に数値が入っておらず順序が間違っていたことがエラーの原因でした。
「※Cells(X, 4)には整数値が入力されているという前提です。」というアドバイスがなければ気づけませんでした。
本当にありがとうございました。また初歩的なミスで質問してしまいすみませんでした。
No.1
- 回答日時:
Cells(X, 4) & 9 の部分を
Cells(X, 4).Value * 10 + 9 としてみたらどうでしょう?
早速ご回答ありがとうございます。
試してみましたができませんでした。
私の説明が下手なのでうまく伝えられなくてすみません。
変数で置きたい「t3」のところを「Cells(●,●).Value」に変えるとちゃんと呼んでくるのですが、変数に置き換ようとするとエラーになってしまってうまくいきません。
そもそも「Application.WorksheetFunction.VLookup」で得た値を変数に置き換えること自体が無理なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
ADOのExecuteメソッドで交互に...
-
ACCESSで値を代入できないとは?
-
String""から型'Double'への変...
-
数式は残し値をクリアするマク...
-
VBAに関して
-
VBA データ(特定値)のある最...
-
ACCESS VBAのSplit()関数の使用...
-
バッチファイルで、あるスクリ...
-
マクロの「SaveAs」でエラーが...
-
On ErrorでエラーNoが0
-
Excel VBA 串刺し計算について
-
VBA エクセル で FIND でのエラ...
-
unityの教科書のゲームを作って...
-
verilog で「*」を使って2の補...
-
ActiveCell.FormulaR1C1の変数
-
オブジェクト型の変数にフォー...
-
Windows7で、Windows updateの...
-
pythonのopenpyxlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報