重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

InputBoxで、論理式を入力させて、その論理式が同じマクロ内のIF文の論理式に反映させたいのですが、”型が一致しません”というエラーが出てしまいます。どうすればよいのでしょうか?お教えください。

A 回答 (4件)

#3は、次のようにも書き換えることができます。


----------------------------------------------------------------
Dim 論理式 As String
Dim セル As Range

論理式 = InputBox("論理式を入力してください。", "論理式入力", "値 < 30")

For Each セル In Selection
If Evaluate(Replace(論理式, "値", CStr(セル.Value))) Then
セル.Font.ColorIndex = 3
End If
Next
    • good
    • 0
この回答へのお礼

ありがとうございます。
こんなに短く書けるのですか。
驚きました。
勉強させていただきます。
どうぞ、これからもよろしく願いします。

お礼日時:2006/04/30 19:18

こんな具合でどうでしょう


----------------------------------------------------------------
Dim 値 As Variant
Dim 論理式 As String
Dim 条件 As Boolean

左 = Selection.Column
上 = Selection.Row
右 = 左 + Selection.Columns.Count - 1
下 = 上 + Selection.Rows.Count - 1
論理式 = InputBox("論理式を入力してください。", "論理式入力", "値 < 30")

For 列 = 左 To 右
For 行 = 上 To 下
値 = Cells(行, 列).Value
条件 = Evaluate(Replace(論理式, "値", CStr(値)))
If 条件 Then
Cells(行, 列).Font.ColorIndex = 3
End If
Next 行
Next 列
    • good
    • 0
この回答へのお礼

ありがとうございました。
使用させていただきます。

お礼日時:2006/04/30 19:12

お世話になります。



.NET であれば、こちらが参考になると思います。
http://dobon.net/vb/dotnet/programing/eval.html

この回答への補足

初心者で、申し訳ありません。
エクセルのマクロを作成しています。
範囲をマウスで指定し、その中で条件にあう数字を赤で教示したいのです。
つぎのようなマクロを考えたのですが、動きません。

Dim 値 As Variant
Dim 論理式 As String

左 = Selection.Column
上 = Selection.Row
右 = 左 + Selection.Columns.Count - 1
下 = 上 + Selection.Rows.Count - 1
論理式 = InputBox("論理式を入力してください。", "論理式入力", "値 < 30")

For 列 = 左 To 右
For 行 = 上 To 下
値 = Cells(行, 列).Value
If 論理式 Then
Cells(行, 列).Select
Selection.Font.ColorIndex = 3

End If
Next 行
Next 列

補足日時:2006/04/28 14:23
    • good
    • 0

エクセルVBAですよね。


例えば
Dim exp As String
exp = InputBox("論理式を入力して下さい", "論理式入力")
If Evaluate(exp) Then
MsgBox "yes"
Else
MsgBox "no"
End If
というようなプログラムで、
A1セルに 10 が入力されている時
InputBox での入力で
A1=10
と入力すると、"yes" と表示されます。

この回答への補足

初心者で、申し訳ありません。
つぎのようなマクロが動かずに困っています。
マウスで指定した範囲の中で、条件にあった数字を赤で印字したいのです。
よろしくお願いします。

Dim 値 As Variant
Dim 論理式 As String

左 = Selection.Column
上 = Selection.Row
右 = 左 + Selection.Columns.Count - 1
下 = 上 + Selection.Rows.Count - 1
論理式 = InputBox("論理式を入力してください。", "論理式入力", "値 < 30")

For 列 = 左 To 右
For 行 = 上 To 下
値 = Cells(行, 列).Value
If 論理式 Then
Cells(行, 列).Select
Selection.Font.ColorIndex = 3

End If
Next 行
Next 列

補足日時:2006/04/28 14:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!