[リストへもどる]
一括表示

投稿時間:2003/06/27(Fri) 15:38
投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:
Excel内の判定式結果の取得について。
こんにちは。わからないことがあるので投稿してみました。
WinXP HomeEditionでVB6.0 SP5 を使っています。
あるセルに
=if(xxx,"正解","不正解")
という式が組み込まれていて、VBからそのセルを参照したときに、
文字列が「正解」だったら・・・「不正解」だったら・・・・という処理の仕方をしています。
ただ、「正解」「不正解」という文字列が決まっていない為、その文字列ではなくて、
元のif文の判定式「xxx」結果がTrueだったら・・・Falseだったら・・・でVB内の処理を分岐させたい
と思っているのですが、True/Falseの取得ってできるのでしょうか。
何方かご存知の方、教えて下さい。宜しく御願いします。

投稿時間:2003/06/28(Sat) 11:28
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Excel内の判定式結果の取得について。
Excelの情報関数で使えるものがないか調べて見ましたがどうも無いようでした。
後は、非表示の列に False Or True を返す同じ式を入れておく位しか思いつきません。

投稿時間:2003/06/28(Sat) 19:05
投稿者名:NEU(ノイ)
Eメール:
URL :
タイトル:
Re: Excel内の判定式結果の取得について。
関数をつくってみました。エラー処理はしていません。

Private Function IsCellBoolean(strCellValue As String, strCellFormula As String) As Boolean
    Dim strTemp() As String
    
    strTemp() = Split(strCellFormula, """")
    IsCellBoolean = strCellValue <> strTemp(UBound(strTemp) - 1)
End Function


例) xlSheet.Cells(1, 2) を調べる場合

Debug.Print IsCellBoolean(xlSheet.Cells(1, 2).Value, xlSheet.Cells(1, 2).Formula)

投稿時間:2003/06/30(Mon) 06:25
投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:
御礼: Excel内の判定式結果の取得について。
花ちゃんさん、NEU(ノイ)さん
お返事ありがとうございました!!!
花ちゃんさんの通り、使えそうな関数が見つからなかったのですが、
NEU(ノイ)さんが紹介してくださったNEU(ノイ)さん作の関数を使わせていただこうと思います。
因みに、以下のようにしました。
特別なエラー処理は施してはいないのですが、自分でデバッグした結果、
True/Flaseの結果をそれなりに取得できたので使えそうかナと思いまして。

どうもありがとうございました!!!

Private Function IsCellBoolean(strCellValue As String, strCellFormula As String) As Boolean
    Dim strTemp() As String
    
    strTemp() = Split(strCellFormula, """")
'    IsCellBoolean = strCellValue <> strTemp(UBound(strTemp) - 1)
    IsCellBoolean = strCellValue Like strTemp(UBound(strTemp) - 1)
End Function
例) xlSheet.Cells(1, 2) を調べる場合
Dim bln_value As Boolearn
'セル内の条件式がTrue結果ならTrue、False結果ならFalseを取得
bln_value = IsCellBoolean(xlSheet.Cells(1, 2).Value, xlSheet.Cells(1, 2).Formula)

投稿時間:2003/06/30(Mon) 18:01
投稿者名:NEU(ノイ)
Eメール:
URL :
タイトル:
Re: 御礼: Excel内の判定式結果の取得について。
xlSheet.Cells(1, 1) に ○
xlSheet.Cells(1, 2) に =IF(A1="○","正解","不正解") を入力し
セルに 正解 が表示された状態でその関数を実行すると False になりますが
よろしいですか。

strTemp(UBound(strTemp) - 1) は False の時の文字列です。

> IsCellBoolean = strCellValue <> strTemp(UBound(strTemp) - 1)
これは以下のものと同じです。
If strCellValue <> strTemp(UBound(strTemp) - 1) Then
    IsCellBoolean = True
Else
    IsCellBoolean = False
End If

投稿時間:2003/07/01(Tue) 16:58
投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:
Re^2: 御礼: Excel内の判定式結果の取得について。
> xlSheet.Cells(1, 1) に ○
> xlSheet.Cells(1, 2) に =IF(A1="○","正解","不正解") を入力

> セルに 正解 が表示された状態でその関数を実行すると False になりますが
> よろしいですか。
>
NEUさん>
ご指摘ありがとう御座います。あら・・・確かにそうでした。
自分のデバッグが足りませんでしたね。。。
もうちょっと確認してからまた書込みさせていただきます。。。。

投稿時間:2003/07/06(Sun) 13:10
投稿者名:ゆうや
Eメール:curren62036@yahoo.co.jp
URL :
タイトル:
謝辞: Excel内の判定式結果の取得について。
随分前の書込みですがすみません。
NEU(ノイ)さんに御指摘を受けて自分でデバッグしてみました。
多分これならいけるのではないでしょうか。。。。。

'------------------------------------------------------------------
'■関数名    :IsCellBoolean
'■モジュール名 :セル条件式結果取得処理
'■用途     :セルに組み込まれた条件式のTrue/Falseを取得する。
'■引数     :strCellValue:セルの表示文字
'        :strCellFormula:セルに組み込まれている条件式
'■戻り値    :True:条件式結果がTrue/Flase:条件式結果がFalse
'------------------------------------------------------------------
Private Function IsCellBoolean(strCellValue As String, strCellFormula As String) As Boolean
    
Dim strTemp() As String     'セルに組み込まれている条件式を文字列で格納
    
    IsCellBoolean = True                                    '戻り値True初期設定
    strTemp() = Split(strCellFormula, """")                 '条件式をカンマで区切って配列の格納
    If strCellValue = strTemp(UBound(strTemp) - 1) Then     'Flase結果文字列と一致の場合
        IsCellBoolean = False                               '戻り値False設定
    End If

End Function

例) xlSheet.Cells(1, 2) を調べる場合

Dim bln_value As Boolearn
bln_value = IsCellBoolean(xlSheet.Cells(1, 2).Value, xlSheet.Cells(1, 2).Formula)

投稿時間:2003/07/06(Sun) 16:05
投稿者名:NEU(ノイ)
Eメール:
URL :
タイトル:
Re: 謝辞: Excel内の判定式結果の取得
> 多分これならいけるのではないでしょうか。。。。。
OKです。
自分で理解できたものが一番ですね。