[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『突然 #VALUE! になる』(超超初心者) Excel2003 WindowsXPです
下記の複数シートが有るブック(元表を使用する時にコピーしている)で 使用中に突然 長さを表示するセル [C7] [G7] [K7]・・・・[S39]が #VALUE! になる事が有ります。
原因・解決法を教えて下さい。
A B C E F G I J K M N O Q R S 7 8
23 24
39 40
「端子台の長さを表示するセル」 C7セル =TBLEN(A8,B8,C8) G7セル =TBLEN(E8,F8,G8) K7セル O7セル S7セル C24セル・・・・S39セル にもおなじように入っています。
このブックの最初のシートに端子台の規格を表記してあります。 A列に「型式1」 B列に「型式2」C列に「型式3」D列に「長さ」を表記
マクロはまったく解りませんのでコピーだけします。
Function TBLen(strKey1 As String, strKey2 As String, strKey3 As String) As Single
Dim intI As Integer
With Worksheets("端子台長さ")
'--- 引数の初期化 --- TBLen = 0
'--- シート内の検索 --- --- --- --- --- --- --- --- --- --- --- --- -- intI = 2 Do Until .Cells(intI, 1) = "" If .Cells(intI, 1) = strKey1 And _ .Cells(intI, 2) = strKey2 And _ .Cells(intI, 3) = strKey3 Then '条件比較
TBLen = .Cells(intI, 4) '端子台長さ Exit Function End If intI = intI + 1 Loop '--- --- --- --- --- --- --- --- --- --- --- --- -- End With
End Function
気のせいか数時間後に直っています。?? こんな事って有りますか。
Option の自動計算が Off になっていませんか? と思いましたが、C列が循環しているせいではないですか? (Mook)
お世話になります。
通常の使用中には良いのですが突然(1,2ヶ月に1回ぐらい ブック内全てのシートの 上記 のセルが #VALUE! になります。
「オプション」の「計算方法」の「自動」にチェックが入っています。
C列が循環するような操作「移動・コピー等」を行った場合にはそのセルだけで、 他への影響は無かったと思います。
「C列が循環する」と何かとの複数原因か? とも考えましたが解りません。
質問ですが 作ってもらったVBAです 間違っていませんか? (超超初心者)
こちらで検証して#VALUE!になると思われるケースは、 ・.Cells(intI, 4)で数値以外(数値化できない文字列)が関数の結果として渡される場合。 (データ型が一致しない) ・32768行以上検索が行われる場合。 (Integer型変数のオーバーフロー) ・参照するシート「端子台長さ」が存在しない場合。 (オブジェクトエラー、「インデックスが有効範囲にない」) これらを回避することだけを考慮すると、 Function TBLen(strKey1 As String, strKey2 As String, strKey3 As String) As Variant Dim intI As Long Dim sh As Worksheet For Each sh In Worksheets If sh.Name = "端子台長さ" Then With Worksheets("端子台長さ") '--- 引数の初期化 --- TBLen = 0 '--- シート内の検索 --- --- --- --- --- --- --- --- --- --- --- --- -- intI = 2 Do Until .Cells(intI, 1) = "" If .Cells(intI, 1) = strKey1 And _ .Cells(intI, 2) = strKey2 And _ .Cells(intI, 3) = strKey3 Then '条件比較
TBLen = .Cells(intI, 4) '端子台長さ Exit Function End If intI = intI + 1 Loop '--- --- --- --- --- --- --- --- --- --- --- --- -- End With Else TBLen = "Sheet does not exist" End If Next sh End Function いずれにしても、数時間後に直る、というのが理解できない現象ですが。 (みやほりん)(-_∂)b
(みやほりん)(-_∂)b さん ありがとうございます。
>.Cells(intI, 4)で数値以外(数値化できない文字列)が関数の結果として渡される場合。 数値です。
>・32768行以上検索が行われる場合。 増える可能性がありますが現在 235行 です。
>・参照するシート「端子台長さ」が存在しない場合。 直前まで使用中でした。 現在は、直ったために普通に使用しています。
又同じ現象が起こったら その時の前後を把握して再質問させていただきます。
お世話に成りました。 まずは、解決した事にさせていただきます。 (超超初心者)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.