Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10471 / 13644 ツリー ←次へ | 前へ→

【21589】VLOOKUPで別シート参照 ほい 05/1/24(月) 17:41 質問[未読]
【21610】Re:VLOOKUPで別シート参照 G-Luck 05/1/24(月) 23:07 回答[未読]
【21615】Re:VLOOKUPで別シート参照 ほい 05/1/25(火) 0:19 お礼[未読]
【21616】Re:VLOOKUPで別シート参照 ほい 05/1/25(火) 0:28 質問[未読]
【21617】Re:VLOOKUPで別シート参照 G-Luck 05/1/25(火) 1:09 回答[未読]
【21620】Re:VLOOKUPで別シート参照 Jaka 05/1/25(火) 9:37 回答[未読]
【21658】Re:VLOOKUPで別シート参照 ほい 05/1/25(火) 23:05 お礼[未読]

【21589】VLOOKUPで別シート参照
質問  ほい  - 05/1/24(月) 17:41 -

引用なし
パスワード
   シート1のD1:D10のなかでシート2のB1の値と同じものを探し、その(シート1のD1:D10)右列(E列)の値をC1のセルに入力したいので、1.をつくりました。C1のセルには計算式でなく値を入力したいです。
シート2のA1に今日の日付を入力したいので2.をつくりました。
エラーがでますので、エラーがでない方法とC1とA1に希望の値が入力される
方法をどなたか教えてください。よろしくおねがいします。

Dim i As Variant
i = Worksheets("sheet1").Range("d1:e10").
Worksheets("sheet2").Select
 1.Range("c1").Value = WorksheetFunction.VLookup((Range("b1")), i, 2, 0)
2.Range("a1").Value = WorksheetFunction.today()
End Sub

【21610】Re:VLOOKUPで別シート参照
回答  G-Luck  - 05/1/24(月) 23:07 -

引用なし
パスワード
   ▼ほい さん:
>Dim i As Variant
> i = Worksheets("sheet1").Range("d1:e10").
> Worksheets("sheet2").Select
>  Range("c1").Value = WorksheetFunction.VLookup((Range("b1")), i, 2, 0)
> Range("a1").Value = WorksheetFunction.today()
>End Sub

>  Range("c1").Value = WorksheetFunction.VLookup((Range("b1")), i, 2, 0)
は、私の環境では、問題なく実行できました。
ただ、Range("B1")に入力されている値が、D1:D10内に見つけられない場合、エラーが出るようです。

> Range("a1").Value = WorksheetFunction.today()
については、todayはワークシート関数として提供されていないので、エラーが出ます。

Range("a1").Value = Int(Now)
か、もしくは
Range("a1").Value = Application.Evaluate("today()")
として、書式を日付にするというのはどうでしょうか?

【21615】Re:VLOOKUPで別シート参照
お礼  ほい  - 05/1/25(火) 0:19 -

引用なし
パスワード
   G-Luckさん 2.の方は解決しました。ありがとうございます。

【21616】Re:VLOOKUPで別シート参照
質問  ほい  - 05/1/25(火) 0:28 -

引用なし
パスワード
   1.の方は「実行時エラー'1004'worksheetfunctionクラスの
vlookupプロパティを取得できません」というエラーメッセージが
でます。
いい方法があれば教えてください。よろしくおねがいします。

【21617】Re:VLOOKUPで別シート参照
回答  G-Luck  - 05/1/25(火) 1:09 -

引用なし
パスワード
   >Range("B1")に入力されている値が、D1:D10内に見つけられない場合、エラーが出
>るようです。

↑の点は大丈夫ですか?

Vlookupにこだわらなくてもいいのではないですか?
たとえば、

Private Sub sss()
  Dim i As Variant

  Range("C1") = ""
  
  For Each i In Worksheets("Sheet1").Range("D1:D10")
    If i = Range("B1") Then
      Range("C1") = i.Offset(0, 1)
      Exit For
    End If
  Next i
End Sub

【21620】Re:VLOOKUPで別シート参照
回答  Jaka  - 05/1/25(火) 9:37 -

引用なし
パスワード
   おはようございます。
こんな感じにしてください。

gg = Application.VLookup("I", Range("A1:D9"), 3, 0)
If Not IsError(gg) Then
  MsgBox gg
Else
  MsgBox "Err"
End If

WorksheetFunctionを書きたいなら、
On error resume next 等でエラートラップして、
エラーになったかどうかで判断してください。

WorksheetFunctionは、エラー値を返してくれない&記述が長くなるので、私は使わないようにしました。
別サイトで、
bb = Application.Match
は、下記バージョン(EXL95など)との互換ように残してあるから、最新バージョンWorksheetFunctionを使うのが良いとかいている人もいるみたいですが、古かろうが使いやすい方を私は使ってます。
結局は、記述が短くなる方を選んでいたら、こっちの方が解りやすく使いやすかっただけなんですけど...。

【21658】Re:VLOOKUPで別シート参照
お礼  ほい  - 05/1/25(火) 23:05 -

引用なし
パスワード
   ▼G-LuckさんJakaさん:
ありがとうございました

10471 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free