application.inputboxでセル範囲を取得する場合の空白時の処理方法について

このQ&Aのポイント
  • EXCEL VBA初心者の方からの質問です。application.inputboxを使用してセル範囲を取得する際に、空白の場合にiを次に進める方法を知りたいとのことです。
  • 質問者は、test1というサブルーチン内で、iを1から5まで増やしながら、application.inputboxでセル範囲を取得している状況です。
  • 空白の場合にiを次に進める方法ですが、一般的には、取得したセル範囲が空白の場合には、iをインクリメントし、次のループに進めるようにすることが一般的です。
回答を見る
  • ベストアンサー

application.inputbox 空白時に

こんにちは。EXCEL VBA初心者です。 application.inputbox でセル範囲を取得する場合、空白の場合は iを次に進ませたいのですが、 何か方法はないでしょうか? Sub test1() Dim Target As Range Dim i As Integer i = 1 For i = 1 To 5 Set Target = Application.InputBox("セルを選択してください", Type:=8) MsgBox i Next i End Sub

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

  • ベストアンサー
回答No.1

On Error Resume Next でエラーを強制的に無視すれば行けます。

okwv-first
質問者

お礼

お礼が遅くなりました。申し訳ありません。 他のエラー処理がありますので、無視することはできません。 回答ありがとうございました。

関連するQ&A

  • VBAのinputboxで何もいれずに[OK]を押した時エラーになります

    よろしくお願い致します。 EXCELのVBAで「inputbox」を使ってセルを選択させたいと考えております。 下記のコードだと「キャンセル」や「×」で閉じられた時はmsgbox「キャンセル」が出てExit subするのですが、何も入力しないで「OK」を押した場合がどうしてもエラー(入力した数式は正しくありません)になります。 いろいろ調べて試したのですがどうしてもできず困っています。 どなたか教えてください。 Sub test() Dim myAns As Range On Error Resume Next Set myAns = Application.InputBox(Prompt:="セルを選択してください。", Title:="セル選択", Type:=8) On Error GoTo 0 If myAns Is Nothing Then MsgBox "キャンセル" Exit Sub ElseIf myAns = "" Then MsgBox "最低1つは選択してください" Exit Sub Else MsgBox myAns.Address(0, 0) End If End sub

  • 空白セルに●を入れたい

    Excelのセル範囲(例:としてA1からC10)のセルを調べて、 空白のセルになにかの文字(例:●)を打ち込みたい場合のVBAの書き方を教えてください。 Sub セル埋め() Dim r As Range, i As Range Set r = Range("A1:C10") '範囲指定 If Intersect(r, Target) Is Nothing Then For Each i In r If i.Value = "" Then i.Value = "●" Next i End Sub この書き方にこだわっているわけではないので、もっと簡単なやり方でもけっこうです。

  • Application.InputBoxで疑問

    アクティブセルの文字列を求めるVBAのコードをお願いします。 マクロを実行した後で、処理するセルを選択したいので 下記コードを利用するとします。 Sub Sample1() Dim Target As Range Set Target = Application.InputBox("セルを選択してください", Type:=8) End Sub 例えば、 sheet2の2行目列の61列目(BJ)から65列目(BN)までをアクティブセルに指定したとして (Sheet2のrange("BJ2:BN2")相当) 前提として 検索する文字列は、1セルに1文字ずつしか記入されていません。 下記の場合では、 BJ BK BL BM BN 2 R a n g e 上記の場合は、Rangeが求める文字列です。 Targetで求めるアドレスは最初の「$BJ$2」だけで 必要な文字列としては Selection.Addressで「$BJ$2:$BN$2」です。 どう変換すれば良いのか良く判りません。

  • ExcelのVBAで、application.inputboxで、開いている他のブックを選択できません。

    いつもお世話になっております。 ExcelのVBAで、application.inputboxで他のブックを選択したいのですが、どうも出来ません。下記のコードを実行して、InputBoxで、他のブックのセルを指定したいのですが、どうも現在開いている他のブックをマウスでクリック出来ないのです。 下記のコードは、『選択範囲を、InputBoxで指定した先にコピーしたい』という意図から、まずは、Msgboxに表示してみることにしたものです。 これは、何故なのでしょうか? ご教示下さい。 'rngOriginalを、rngCopyToにコピーします。 Sub Test() Dim rngOriginal As Range Dim rngCopyTo As Range Set rngOriginal = Selection.Cells  Set rngCopyTo = Application.InputBox("コピー先を選択してください", , , , , , , 8) With rngOriginal MsgBox .Parent.Parent.Name & " " & .Parent.Name & "!" & .Address(, , Application.ReferenceStyle) End With With rngCopyTo MsgBox .Parent.Parent.Name & " " & .Parent.Name & "!" & .Address(, , Application.ReferenceStyle) End With End Sub

  • マクロ。セルを空白にした時の処理

    セルをDeleteで空白にした時の処理について教えて下さい。 まず現在下記のようなマクロがあります。 Private Sub SubProc1(ByVal Target As Range) Dim str1 As String Dim str2 As String  On Error Resume Next  If Application.Intersect(Target, Range("B18")) Is Nothing Then Exit Sub  If Range("B18") = "" Then Exit Sub  Application.ScreenUpdating = False str1 = "T-POT #" str2 = " G1 G2 MEST計測を行いました。" Range("A7").Value = str1 & Range("B18") & str2 End Sub B18セルに数字や文字も入力するとA7セルにB18セルの入力内容を含めた 文字が表示されるのですが、B18セル内の文字をDeleteで削除しても A7セルは特に反応なしです。 やりたいことはB18セルから文字をDeleteで削除した場合 A7セルからもB18セルの入力内容を削除したいです。( str1、str2だけが残るイメージ) 宜しくお願いします。

  • オブジェクト??

    またまた困っております inputboxで入力した日付を検索して複数選択しようとしたのですが unionの使い方がよくわかりません(・・;) どこが間違っているのかもしくは何が足りないのか教えてください<m(__)m> どうかよろしくお願いします! Option Explicit Sub グラフ() Const SH_NAME As String = "VBA" Dim art As String Dim i Dim ws As Worksheet Dim endrow As Long Dim msg As String Dim writerow As Integer Dim grahu As Chart Dim target As Range Set ws = ThisWorkbook.Worksheets(SH_NAME) writerow = 2 art = InputBox("日付を入力してください") With ws endrow = .Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To endrow If art = .Range("A" & i) Then Set target = Union(target, "D" & i) Else If InStr(msg, .Range("A" & i)) = 0 Then msg = msg & .Range("A" & i) & vbCrLf End If End If Next i target.Select End With If msg <> "" Then MsgBox msg End If MsgBox "グラフベースを作成しました" End Sub Set target = Union(target, "D" & i) ↑ここでエラーが起きて 「オブジェクトが必要です」と言われました どうすればよいのでしょうか?

  • InputBox  String型・Variant

    VBAです。 InputBox  String型・Variant型がエラーにならない理由がわかりません。 Sub 日付型() Dim 日 As Date 日 = InputBox("値をいれてください") End Sub Sub 数値型() Dim i As Long i = InputBox("値をいれてください") End Sub Sub 通貨型() Dim 円 As Currency 円 = InputBox("値をいれてください") End Sub Sub String型() Dim a As String a = InputBox("値をいれてください") End Sub Sub Variant型() Dim v As Variant v = InputBox("値をいれてください") End Sub String型・Variant型以外は、 「実行時エラー '13'; 型が一致しません。」になります。 String型・Variant型はならない理由を教えてください。ご回答よろしくお願いします。

  • マクロの変数のことで

    Sub test() Dim x As Range, y As Range Dim i As Integer i = 0 Set y = Application.InputBox("", "Paste", Type:=8)  For Each x In Selection   x.Cut y.Offset(i, 0)   i = i + 1  Next x End Sub 上記マクロは、選択されているセルを切り取って、指定したセルを基点として下方向に貼り付けるものです。 "i"の初期値を"1"にすると成功しますが、"0"だとエラーになります。"-3"などにすると、値がゼロになった時点でエラーになります。なぜ"i"がゼロになるとエラーになってしまうのでしょうか?  指定したセルを基点にして貼り付けられるようにするには、どうすればいいでしょうか?

  • 小数点以下表示

    averageで計算した値を表示したところ、 勝手に四捨五入されてしまいました 小数点第二位まで表示したいので どなたかよろしくお願いいたします<m(__)m> Option Explicit Public Sub 平均() Const SH_NAME As String = "VBA" Dim art As String Dim i Dim ws As Worksheet Dim endrow As Long Dim msg As String Dim writerow As Integer Dim target As Range Dim ActCell As Variant Dim Result As Integer Set ws = ThisWorkbook.Worksheets(SH_NAME) writerow = 2 art = InputBox("日付を入力してください") With ws endrow = .Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To endrow If art = .Range("A" & i) Then If target Is Nothing Then Set target = Range("D" & i) Else Set target = Union(target, Range("D" & i)) End If Else If InStr(msg, .Range("A" & i)) = 0 Then msg = msg & .Range("A" & i) & vbCrLf End If End If Next i If msg <> "" Then MsgBox msg End If target.Select ActCell = Selection.Address Result = Application.WorksheetFunction.Average(.Range(ActCell)) Range("F39").Value = Result Range("F39").NumberFormatLocal = "0.00" End With End Sub

  • InputBoxについて

    Sub test1() Dim tmp As String tmp = Application.InputBox("testです") End Sub Sub test2() Dim tmp As String tmp = InputBox("testです") End Sub この二つのコードを比較すると、 test1の方は、ダイアログボックスのタイトルに「入力」が表示され、 四角いインプットボックスが表示されます。 test2の方は、私がいつも使っているインプットボックスなのですが、 「tmp =」と 「InputBox」の間に何かコードが省略されてるのでしょうか? Application.を付ける事によって、形が変わってしまうのでしょうか? また、オブジェクトブラウザを見ると 【1】Function InputBox(Prompt As String, [Title], [Default], [Left], [T Excel.Application のメンバ 【2】Function InputBox(Prompt, [Title], [Default], [XPos], [YPos], [Help VBA.Interaction のメンバ がありましたが、 test1、test2それぞれどちらの事なのでしょうか?

専門家に質問してみよう