• ベストアンサー

エクセルマクロでinputboxメソッドゼロ入力

エクセル2007です。 以下のマクロで、inputboxメソッドで質問させると、キャンセルボタンを押すと、うまいぐあいに止まります。 しかし、0を押しても、止まってしまいます。本当は、C2にゼロと表示させたいのです。 Sub 練習() Dim myR myR = Application.InputBox(prompt:="数量を入力しなさい", Type:=1) If myR = False Then Exit Sub Range("C2").Value = myR End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。 Sub 練習()   Dim myR   myR = Application.InputBox(prompt:="数量を入力しなさい", Type:=1)   If VarType(myR) = vbBoolean Then Exit Sub   Range("C2").Value = myR End Sub Application.InputBox メソッドの場合は、 戻り値のデータ型で判別します。

kiki2926
質問者

お礼

ありがとうございました。 望んでいたとおりになりました。心から御礼申し上げます。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! >If myR = False Then Exit Sub の部分を >If myR = "" Then Exit Sub としてみてはどうでしょうか? FALSE=0 のコトですので、 何も変化なくマクロが終わってしまいます。 尚、質問のコードではインプットボックスタイプを >Type:=1 とされていらっしゃるので、 数値の場合がTRUE・文字列の場合はFALSEとなります。 というコトは >If myR = True Then Exit Sub としても大丈夫だと思います。m(_ _)m

kiki2926
質問者

お礼

ありがとうございました。 Sub 練習() Dim myR myR = Application.InputBox(prompt:="数量を入力しなさい", Type:=1) If myR = "" Then Exit Sub Range("C2").Value = myR End Sub にしたら、0を入力したらちゃんと0が出ましたが、キャンセルボタンを押すと、C2にfalseがでました。 falseが出るのは、うーむです。

関連するQ&A

  • エクセルマクロ inputboxの位置

    エクセル2007です。以下のinputboxメソッドで、トップとレフトの値を変えても、inputboxの位置がとても悪いのです。K14あたりに出ます。どうしたらいいでしょうか。 Sub 練習() Dim myR myR = Application.InputBox(prompt:="数量を入力しなさい", Top:=10, Left:=30, Type:=1) If VarType(myR) = vbBoolean Then Exit Sub Range("C2").Value = myR End Sub

  • マクロ inputbox ブランクで入力した時

    いつも回答して頂きありがとうございます。 InputBoxに何も入力せず、OKを押してしまった場合、マクロの処理を終了させたいのですが、どうしたらよろしいでしょうか?宜しくお願い致します。 Sub 名前を入力する() Dim a As Long a = Application.InputBox("班を数字で入力して下さい。", Type:=1) If a = 0 Then MsgBox "キャンセルされました。", vbOKOnly Exit Sub End If With ActiveSheet .Range("E4:F5").Value = Worksheets("名前一覧").Cells(2, a).Value End With End Sub

  • InputBox関数について教えて下さい。

    InputBox関数について教えて下さい。 記述内容は以下の通りです。 Sub 追加() Dim tuika As Double tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する項目を【全角大文字】で入力して下さい。", _ Left:=700, _ Top:=100, _ Type:=2) If tuika = False Then Exit Sub With Worksheets("Sheet1") .Range("B10").Value = tuika LastRow = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet2").Range("A" & LastRow).Value = Worksheets("Sheet1").Range("B10").Value End With End Sub 困っているのは、Type:=2)の部分です。 文字列を指定しているのですが数値は入力出来るのですが肝心の文字列が入力出来ない状況です。 どなたかご指導をお願い致します。 【環境】 OS = WindowsXP SP3 Excel = 2003

  • EXCEL マクロ

    こんにちは。 今マクロを作成しております。 A1~D1の中の数字の最小値・最高値に罫線の斜め線を入れたいのですが、 例) A1  B1  C1  D1    10  15  15   8   下記のマクロだと上記のように同じ数字があるとその両方に斜め線が入ってしまいます。 斜め線を入れたいのは、最小値1つと最高値1つで、上記の場合B1とC1が最高値なので C1に斜め線を入れたいのです。 仮にA1とD1が同数で最小値または最高値の場合D1に斜め線    B1とD1が同数で最小値または最高値の場合D1に斜め線 (同数の場合より左側にあるセルに斜め線) どのようにしたらいいのかアドバイスいただけますか? Sub 上下カット() Dim MyR As Range Dim MyMax, MyMin With ActiveSheet MyMax = WorksheetFunction.Max(.Range("A1:D1")) MyMin = WorksheetFunction.Min(.Range("A1:D1")) For Each MyR In .Range("A1:D1") If MyR.Value = MyMax Or MyR.Value = MyMin Then MyR.Borders(xlDiagonalUp).LineStyle = xlContinuous End If Next End With End Sub

  • エクセルのInputBoxについて教えてください。

    エクセル2010です。 InputBoxについて教えてください。  負数以外の数値を受け取りたいのです。 以下のようにやってみました。 Sub test001() Dim ans As Double ans = Application.InputBox("数値を入力", Type:=1) If ans = False Then MsgBox "キャンセル" Exit Sub ElseIf ans < 0 Then MsgBox "負数は不可。" Call test Else MsgBox ans & "を受け取りました。" End If End Sub 一応、これで動くのですが、問題は数値0を入力された場合です。 0はFalseと認識されるようで、キャンセルとなってしまいます。0は0という数値で受け取りたいのです。 試行錯誤の結果、Type:=1をやめ、変数ansをVariantにして If ans = “False” Then と、Falseをダブルクォーテーションでくくると、0を数値としてくれるようです。でも理屈がわかりません。変数ansにキャンセルボタンで帰ってくるのはBooleanのFalseであり、Stringの”False”ではないと思うのですが。 Sub test002() Dim ans ans = Application.InputBox("数値を入力") If ans = "False" Then MsgBox "キャンセル" & TypeName(ans) Exit Sub ElseIf ans = "" Then MsgBox "未入力" & TypeName(ans) Call test002 ElseIf Not IsNumeric(ans) Then MsgBox "数値ではありません。" & TypeName(ans) Call test002 ElseIf ans < 0 Then MsgBox "負数は不可。" & TypeName(ans) Call test002 Else MsgBox ans & "を受け取りました。" & TypeName(ans) End If End Sub あと、もうひとつ質問は、数値以外の入力があった場合、再度入力させるためいちいちCall test002 を入れてますが、このやり方でただしいのでしょうか?

  • エクセル 加算 

    1つのセルに数字を入力すると加算されているマクロを探していたら 以下の回答がありました Dim memo Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Target.Value <> "**" And IsNumeric(Target.Value) = False Then Exit Sub Application.EnableEvents = False If Target.Value = "**" Then memo = 0 Else memo = memo + Target.Value End If Target.Value = memo Application.EnableEvents = True End Sub このマクロですがA1に入力した場合に適用しますが、このマクロをたとえばA1からC1の範囲で使用した1場合にどのようなマクロをすればよいかわかりません それか、このマクロではそのようなことができるのかもわかりませんので教えて頂けないでしょうか

  • InputBoxをつかったフィルタ処理

    1000kbほどのエクセルデータに対して、任意の文字列を含んだ行を抽出したいです。 ツールのフィルタの適用をしてもいいのですが、テキストボックスを出現させるだけで、かなりのラグ(5-6秒)があります。 そこでマクロを組んでさくさく作業を使用と思ったのですが、うまくいきません。解決法を提示して頂くと助かります。 以下、記述したものです。 ---------------------------------------------------------------- Sub フィルタ()  Dim myR As String  Dim Filter As String   myR = Application.InputBox(prompt:="抽出語", Type:=2)   ActiveSheet.Columns(1).AutoFilter Field:=1, Criteria1:="=*myR*" End Sub ----------------------------------------------------------------

  • エクセルVBA、入力しないと閉じないInputBox

    必ず何かを入力しないと閉じないInputBoxを作ろうと思います。 以下のコードで入力がなければ閉じないというか、Line:に戻るので、何度でも現れるInputBoxになるようですが、このやり方は正しいですか? 通常はどうやるのでしょうか? Sub test() Dim a line: a = Application.InputBox("必ず入力して下さい。", "Input!") If Len(a) = 0 Or a = False Then GoTo line MsgBox "有難う。" & a & " ですね。", , "(o。_。)oペコッ" End Sub

  • エクセル マクロ 追加

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub End If If Not Intersect(Target, Range("B1:C15")) Is Nothing And Target.Value = "" Then Exit Sub End If Dim c As Worksheet Dim flag As Boolean flag = False For Each c In Worksheets If c.Name = Target.Value Then flag = True Next If flag = False Then Exit Sub If Target.Address = "$C$2" Or Target.Address = "$C$3" Or Target.Address = "$C$4" _ Or Target.Address = "$C$5" Or Target.Address = "$C$6" Or Target.Address = "$C$7" _ Or Target.Address = "$C$8" Or Target.Address = "$C$9" Or Target.Address = "$C$10" _ Or Target.Address = "$C$11" Or Target.Address = "$C$12" Or Target.Address = "$C$13" _ Or Target.Address = "$C$14" Or Target.Address = "$C$15" Then Worksheets(Target.Value).Visible = True Worksheets(Target.Value).Select Else End If End Sub セルに文字が打っています シート名とセルが一緒の文字のとき移動するマクロです データがあるセルをクリックするとそのデータ先に飛ぶように 設定したマクロなのですが、 選択するページの文字は全部最初から設定されている黒文字がつかわれているのですが データがあるときは文字の色を変化させたいのですが どうすればいいでしょうか?

  • EXCEL マクロ 最小値と最高値

    今マクロを作成しております。 A1~D1の中の数字の最小値・最高値に罫線の斜め線を入れたいのですが、 例) A1  B1  C1  D1    10  15  15   8   下記のマクロだと上記のように同じ数字があるとその両方に斜め線が入ってしまいます。 斜め線を入れたいのは、最小値1つと最高値1つで、上記の場合B1とC1が最高値なので C1に斜め線を入れたいのです。 仮にA1とD1が同数で最小値または最高値の場合D1に斜め線    B1とD1が同数で最小値または最高値の場合D1に斜め線 (同数の場合より左側にあるセルに斜め線) どのようにしたらいいのかアドバイスいただけますか? Sub 上下カット() Dim MyR As Range Dim MyMax, MyMin With ActiveSheet MyMax = WorksheetFunction.Max(.Range("A1:D1")) MyMin = WorksheetFunction.Min(.Range("A1:D1")) For Each MyR In .Range("A1:D1") If MyR.Value = MyMax Or MyR.Value = MyMin Then MyR.Borders(xlDiagonalUp).LineStyle = xlContinuous End If Next End With End Sub

専門家に質問してみよう