Excel VBA質問箱 IV

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

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


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

【44276】ユーザー定義関数の外部リンクの質問 duketogo83 06/11/11(土) 23:55 質問[未読]
【44292】Re:ユーザー定義関数の外部リンクの質問 ichinose 06/11/12(日) 9:45 発言[未読]
【44294】Re:ユーザー定義関数の外部リンクの質問 追... ichinose 06/11/12(日) 11:29 発言[未読]
【44297】Re:ユーザー定義関数の外部リンクの質問 追... duketogo83 06/11/12(日) 12:36 お礼[未読]

【44276】ユーザー定義関数の外部リンクの質問
質問  duketogo83  - 06/11/11(土) 23:55 -

引用なし
パスワード
   お疲れ様です。

vlookupを改造してユーザー定義関数を作成したのですが、
下記トラブルがあり外部リンクがうまくいきません。
解決方法があれば教えてください。よろしくお願いします。

【トラブル】
 リンク元のファイルを閉じたまま、リンク先のファイルを開く。
 『リンクを更新しない』を選択してもユーザー定義関数の戻り値が
 エラーになる。 ※vlookupなら値が残るのですが...

【コード】
 Function tlookup(a, b As Range, c)

 Dim e As Boolean

 d = Application.VLookup(a, b, c, False)
 e = Application.IsError(d)

 If e = "True" Then
   tlookup = 0
 Else
   tlookup = d
 End If

 End Function

【44292】Re:ユーザー定義関数の外部リンクの質問
発言  ichinose  - 06/11/12(日) 9:45 -

引用なし
パスワード
   ▼duketogo83 さん:
おはようございます。

>
>vlookupを改造してユーザー定義関数を作成したのですが、
>下記トラブルがあり外部リンクがうまくいきません。
>解決方法があれば教えてください。よろしくお願いします。
>
>【トラブル】
> リンク元のファイルを閉じたまま、リンク先のファイルを開く。
> 『リンクを更新しない』を選択してもユーザー定義関数の戻り値が
> エラーになる。 ※vlookupなら値が残るのですが...

『リンクを更新しない』を選択した場合のエラーが再現できません。

Excelのバージョンから、始まって
リンク元及び、リンク先のブックの詳細等と
再現手順を記述してください。

「リンクを更新する」の選択では

リンク先ブックの数式に
=tlookup(A1,'D:\My Documents\TESTエリア\testarea2002\testfold\[Book1.xls]Sheet1'!$A$2:$B$7,2)

等と入力してあるとエラーになりますね(#Value)!!
これのエラー回避なら、工夫が必要ですが・・・。

まずは、再現できないと考えることもできないので・・・。


>
>【コード】
> Function tlookup(a, b As Range, c)
>
> Dim e As Boolean
>
> d = Application.VLookup(a, b, c, False)
> e = Application.IsError(d)
>
> If e = "True" Then
>   tlookup = 0
> Else
>   tlookup = d
> End If
>
> End Function

【44294】Re:ユーザー定義関数の外部リンクの質問...
発言  ichinose  - 06/11/12(日) 11:29 -

引用なし
パスワード
   >等と入力してあるとエラーになりますね(#Value)!!
>これのエラー回避なら、工夫が必要ですが・・・。
工夫なんて・・・、大げさでした。

  Function tlookup(byval a, byval b As variant, byval c)
'            bの型だけ変更すればよいです
'これは、リンク更新する の場合ですが
>>
>> Dim e As Boolean
>>
>> d = Application.VLookup(a, b, c, False)
>> e = Application.IsError(d)
>>
>> If e = "True" Then
>>   tlookup = 0
>> Else
>>   tlookup = d
>> End If
>>
>> End Function

【44297】Re:ユーザー定義関数の外部リンクの質問...
お礼  duketogo83  - 06/11/12(日) 12:36 -

引用なし
パスワード
   ▼ichinose さん:

アドバイスどおり実行したらうまくいきました!

>'これは、リンク更新する の場合ですが
『更新しない』を選んでも値が残りました!

もっと型の勉強しようと思います。ありがとうございました!
遅くなりましたが、バージョン・再現手順は以下のとおりでした。

【バージョン】 Excel 2003 SP1

【エラー再現手順】
 1.作成したユーザー関数をアドインとして利用し、
  Book1で関数を使って、book2のデータを引用

 2.両Bookを保存し、再度Book1だけを開き『更新しない』を選択しても
  ユーザー関数の返す値がエラー ※vlookupだと前の値が残る

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