Excelのinputboxでのエラーについて

このQ&Aのポイント
  • Excelのinputboxを使用して線を引く構文を作成し、動作することはできます。しかし、inputboxでウインドウの「×」や「キャンセル」ボタンを押すとエラーが発生します。このエラーを回避する方法を教えてください。
  • VBAの素人ですが、inputboxの「×」や「キャンセル」ボタンによって値を返すことができないと思います。どのように対処すればよいでしょうか?
  • Excelのinputboxで線を引く構文を作成し、動作することはできますが、inputboxで「×」や「キャンセル」ボタンを押すとエラーが発生します。このエラーを回避する方法を教えてください。
回答を見る
  • ベストアンサー

Excelのinputboxでのエラーについて

線を引く構文を作り動作はするのですが、inputboxでウインドウの「×」や「キャンセル」ボタンを押すとエラーになるのを回避したいのですが、判りません。ご教示お願いいたします。 Sub 赤太線引き() Dim i As String i = Application.InputBox("線を伸縮できます" + Chr(13) + "数値を増してください", "オプション", 1, Type:=1) Dim T1 As Single, L1 As Single Dim T2 As Single, L2 As Single Dim myShp As Shape With Range("ah61") T1 = .Top L1 = .Left End With With Range("cg60") T2 = .Offset(1, 1).Top L2 = .Offset(1, 1).Left End With ActiveSheet.Shapes.AddLine(L1 + i, T1, L2, T2).Select With Selection.ShapeRange.Line .Visible = msoTrue .Style = msoLineSolid .Weight = 15# .ForeColor.SchemeColor = 10 Selection.ShapeRange.ZOrder msoSendToBack End With Range("bq56").Select End Sub VBAの素人ですが、×やキャンセルでは「i」が返せないのだと思います。よろしくお願い致します。 inputboxは関数でもメソッドでもどちらでもいいのですが。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

突っ込みどころは多々ありますが、とりあえず Sub 赤太線引き() Dim i As String i = Application.InputBox("線を伸縮できます" + Chr(13) + "数値を増してください", "オプション", 1, Type:=1) if i = "False" then exit sub  :  以下いまのマクロのまま のようにしてみましょう。 ×やキャンセルで何が返ってくるかはヘルプに書いてありますが、問題のマクロで実際にiに何が入ってるのか、 msgbox i などをマクロに追加して確認しながら進めてみるのもよい方法です。

raunder
質問者

お礼

とても助かりました。おかげさまで解決しました。 感謝申し上げます。

関連するQ&A

  • Excelの罫線に関するマクロ

    Excelの罫線に関するマクロ 罫線を引き、それを赤くするマクロを作ったのですが、赤罫線の下にもうひとつ罫線が表示されてしまいます。どこを削除すればよいのでしょうか。 ご教示お願いいたします。 Sub 罫線() Dim T1 As Single, L1 As Single Dim T2 As Single, L2 As Single Dim myShp As Shape With Range("c15") T1 = .Top L1 = .Left End With With Range("d14") T2 = .Offset(1, 1).Top L2 = .Offset(1, 1).Left End With Set myShp = ActiveSheet.Shapes.AddLine(L1, T1, L2, T2) ActiveSheet.Shapes.AddLine(L1, T1, L2, T2).Select With Selection.ShapeRange.Line .Visible = msoTrue .Style = msoLineSolid .Weight = 5# .ForeColor.SchemeColor = 10 End With End Sub よろしくお願いします。

  • Excel2003のマクロで複数の罫線を引きたい

    Excel2003のマクロで複数の罫線を引きたい 本日(3月2日)の午前中に罫線のVBAに関する質問をして解決したのですが、今度は複数のセルにわたる罫線を複数引きたいのですが、ご教示お願いいたします。 Sub 罫線() Dim T1 As Single, L1 As Single Dim T2 As Single, L2 As Single Dim myShp As Shape With Range("c15") T1 = .Top L1 = .Left End With With Range("d14") T2 = .Offset(1, 1).Top L2 = .Offset(1, 1).Left End With Set myShp = ActiveSheet.Shapes.AddLine(L1, T1, L2, T2) ActiveSheet.Shapes.AddLine(L1, T1, L2, T2).Select With Selection.ShapeRange.Line .Visible = msoTrue .Style = msoLineSolid .Weight = 5# .ForeColor.SchemeColor = 10 End With End Sub このコードで(14行目と15行目の間、C列からD列)に赤の太線が表示されるようになりました。 さらにこれに加えて一度で、この罫線プラスA列の10行目からC列の14行目に引く罫線を加えたいのですが 上記コードにどのように書きくわえれば良いのでしょうか。 たびたびですみませんが、ご教示よろしくお願いいたします。

  • word2003のマクロが2007でエラーになる

    word2003(windows2000)で使っていたマクロを、人に頼まれてその人の2007のword(windowsXP)に入れたのですがエラーが出て動かないそうです。 マクロは以下のページにあったものの改造で、どこを直したらよいのかわかりません。 http://okwave.jp/qa/q2344318.html 答えでなく、ヒントでも良いのでどなたか教えてください。 h = Selection.ShapeRange.Heightという行で、「エラー5 プロシージャの呼び出し、または引数が不正です」というようなエラーが出るそうです。 2003ではエラーは出ず、選択されている画像の高さがhに入ります。 よろしくお願いします。 ----------------------------------- Public Sub ChgPest() '選択した画像をクリップボードの中身と入れ替えてemfで貼り付ける Dim T, L, h, W, cl, cr, ct, cb As Integer Dim FName As String Dim MyShape As Shape Dim fd As FileDialog Dim clp As Integer Application.ScreenUpdating = False T = Selection.ShapeRange.Top L = Selection.ShapeRange.Left h = Selection.ShapeRange.Height ←●デバッグするとここが黄色になっている W = Selection.ShapeRange.Width posi = Selection.ShapeRange.RelativeVerticalPosition cl = Selection.ShapeRange.PictureFormat.CropLeft cr = Selection.ShapeRange.PictureFormat.CropRight ct = Selection.ShapeRange.PictureFormat.CropTop cb = Selection.ShapeRange.PictureFormat.CropBottom Set myrange = Selection.Range Selection.Delete Selection.PasteSpecial datatype:=wdPasteEnhancedMetafile 'EMFでペースト clp = ActiveDocument.Shapes.Count 'すべてのshapeを数える Set MyShape = ActiveDocument.Shapes(clp) '最後にペーストしたshape ActiveDocument.Shapes(clp).LockAnchor = False 'アンカーを固定しない ActiveDocument.Shapes(clp).WrapFormat.Type = 3 MyShape.Select With Selection.ShapeRange.PictureFormat .CropLeft = cl .CropRight = cr .CropTop = ct .CropBottom = cb End With Selection.ShapeRange.RelativeVerticalPosition = posi Selection.ShapeRange.Top = T Selection.ShapeRange.Left = L Selection.ShapeRange.Height = h Selection.ShapeRange.Width = W Selection.ShapeRange.ZOrder msoSendToBack Application.ScreenUpdating = True End Sub

  • 図形をコピーするマクロ(エクセル)

    以下のマクロで、シート上にある図形(四角形 1)を、選択状態にあるセルの上に移動させることができます。 Sub test() Dim seru As Range On Error GoTo Errorline Set seru = Range(ActiveCell.Address) ActiveSheet.Shapes("四角形 1").Select With Selection.ShapeRange .Left = seru.Left .Top = seru.Top End With Errorline: End Sub 移動ではなくコピーにするには、どう変えればいいでしょうか?

  • エクセルVBAで指定したセルへジャンプするコード(追加の追加質問です)

    http://oshiete1.goo.ne.jp/qa2903797.html たびたびすみません。最後にひとつだけお願いします。 お教えいただいた下のコードは順調に動作するのですが、 対象セルが結合セルの場合、エラーが出てしまいます。 とまってしまうコードの部分は With Selection.AddComment です。 エラーメッセージにはプロシージャの呼び出し、 または引数が不正です。(Error 5)と書いてあります。 結合セルは動作しないものでしょうか? Sub test01() Dim x As String Dim ThisSheet_Name As String Dim Sheet_Name As String Dim Range_Name As String Dim I As Integer, n As Integer Dim Ans As Integer Dim myComment As String '新規追加 Dim Colors As Integer '新規追加 ThisSheet_Name = ActiveSheet.Name '設定シート Select Case Workbooks.Count Case 1 MsgBox "チェックするファイルがありません。" Exit Sub Case 2 For n = 1 To 2 If Workbooks(n).Name <> ThisWorkbook.Name Then x = Workbooks(n).Name '開いている“もうひとつのブック”の名前 End If Next Case Else MsgBox "他に開いているファイルが複数のため対象を特定できません。" Exit Sub End Select I = 0 Do While (1) With ThisWorkbook.Sheets(ThisSheet_Name) If .Range("A3").Offset(I, 0).Value = "" Then MsgBox "検査項目は以上です。" ThisWorkbook.Activate Exit Do 'A列の3行目以下が、空白なら終わる End If Sheet_Name = .Range("A3").Offset(I, 0).Value Range_Name = .Range("B3").Offset(I, 0).Value myComment = .Range("C3").Offset(I, 0).Value End With Windows(x).Activate Sheets(Sheet_Name).Select Range(Range_Name).Select Colors = Selection.Interior.ColorIndex '新規追加 Selection.Interior.ColorIndex = 6 With Selection.AddComment .Visible = True .Text myComment End With Range(Range_Name).Select Ans = MsgBox("「次をチェックしますか?」", vbYesNo) Selection.Interior.ColorIndex = Colors '修正 Selection.ClearComments '新規追加 If Ans = vbYes Then I = I + 1 Else Exit Do End If Loop End Sub

  • ワード2002で「 Selection.ShapeRange.Left 」 が設定できない

    こんにちは。 OSはWinXP Pro、OfficeXPを使用しています。 1ページ目にあるグループ化された図形をページを 追加して貼り付けていくマクロを以前質問したので すが、ShapeRange.Leftの代入がうまくいきません。 ******************************************** Sub 図形追加() Dim siTop As Single Dim siLeft As Single Selection.HomeKey unit:=wdStory ActiveDocument.Shapes("Group 1478").Select siTop = Selection.ShapeRange.Top siLeft = Selection.ShapeRange.Left Selection.Copy Selection.EndKey unit:=wdStory Selection.InsertBreak Type:=wdPageBreak Selection.GoTo What:=wdGoToPage, _ Which:=wdGoToNext Selection.Paste Selection.ShapeRange.Top = siTop Selection.ShapeRange.Left = siLeft Selection.HomeKey unit:=wdLine End Sub ******************************************** 上述の値を追っていくと、 siTop=40.25、siLeft=46が入っているのですが、 下から2段目のShaperange.Leftを実行すると そこには-785.05 という数値が入ってしまいます。 (どこからその数値がでてきたのか????) Shaperange.Topはうまくいくのですが、ステートメント の実行順を変えてもうまくいきません。 どなたか解決策のご教授をお願いします。

  • VBAで画像を自動で切り替える方法

    Excelで棚割表を作っています。商品コードを打つとその商品の画像を自動で表示させたいのですが、雑誌を見ながらコードをアレンジしてほぼ完成したのですが、「プロシージャーが大きい」とエラーが出てマクロを実行出来ません。 画像は100個程度あり、先に別のマクロで貼り付けてあります。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ファイル As String If Intersect(Target, Range("A4")) Is Nothing Then ActiveSheet.Shapes("画像").Delete ファイル = "C:\保存場所\" & Range("A4").Value & ".jpg" Range("B5").Select ActiveSheet.Pictures.Insert(ファイル).Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Top = ActiveCell.Top Selection.ShapeRange.Left = ActiveCell.Left Selection.ShapeRange.Height = 97 Selection.ShapeRange.Width = 52.5 Selection.ShapeRange.Rotation = 0# Selection.ShapeRange.IncrementLeft 1.5 Selection.ShapeRange.IncrementTop 1.5 Selection.Name = "画像" End If (中略) Dim ファイル98 As String If Intersect(Target, Range("U60")) Is Nothing Then Exit Sub ActiveSheet.Shapes("画像98").Delete ファイル98 = "C:\保存場所\" & Range("U60").Value & ".jpg" Range("V61").Select ActiveSheet.Pictures.Insert(ファイル98).Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Top = ActiveCell.Top Selection.ShapeRange.Left = ActiveCell.Left Selection.ShapeRange.Height = 97 Selection.ShapeRange.Width = 52.5 Selection.ShapeRange.Rotation = 0# Selection.ShapeRange.IncrementLeft 1.5 Selection.ShapeRange.IncrementTop 1.5 Selection.Name = "画像98" End Sub 省ける箇所や分割する方法などありましたら教えてください。

  •  エクセルに写真を挿入するマクロを組んでいます。

     エクセルに写真を挿入するマクロを組んでいます。 2003までは問題なく動作していたマクロが、 2007では位置調整がうまく行きません。  そこでネットで検索して With Selection .Left = Range("C6").Left .Top = Range("C" & rowa).Top End With のように Selection.Left を使えば解決するとありましたが、 (1)WIN VISTAのエクセル2007では おなじひとつのエクセルファイルの あるシートではコード通りが位置でるのに 違うシートでは縦位置がずれる。 (2)WIN XPのエクセル2007では すべてのシートで縦位置がずれる。 ただし、ずれの位置は(1)よりは少ない。 といずれのOSでも不具合が出ます。  事情によりエクセル2007でこのマクロを使用しなければならなくなり 非常に困っております。 どなたか解決方法をご存知の方、よろしくお願いします。  なお、(2)のWIN XPでは、エクセル2003も入っており、 その中では、全く問題なくマクロが動作しています。 実際のコードは下の通りです。 Sub 写真呼出(koumoku, jpgf, tr As Variant) Dim rowa As String ActiveWindow.ScrollColumn = 1 ActiveWindow.ScrollRow = tr ←選択したセルの行ナンバー ActiveSheet.Pictures.Insert(motopath & "写真\" & koumoku & "\" & jpgf & ".JPG").Select Selection.Name = "写真" Selection.ShapeRange.LockAspectRatio = msoTrue '縦横比の固定 Selection.ShapeRange.Height = 480 'Selection.ShapeRange.IncrementLeft 100 ←不具合が出たので止めた部分 'Selection.ShapeRange.IncrementTop 40  ←不具合が出たので止めた部分 rowa = tr + 2 With Selection .Left = Range("C6").Left .Top = Range("C" & rowa).Top End With End Sub

  • マクロで線に色をつけるには

    WINDOWS XP EXCELL2003です。 現在、下記のマクロがあります。 それに追加として「赤の線の色」を追加したいのです。(.ColorIndex = 3) いろいろトライを試みましたがうまくいきません。 恐れ入りますがご指導いただけませんでしょうか。 よろしく御願いします。 Sub yokosen_chuuou() Dim yokohaba As Single, tatehaba As Single Dim yoko As Double, takasa As Double Dim shita As Double, migi As Double Dim futosa As Single, mannaka As Double On Error GoTo trap futosa = Val(InputBox("太さを指定してください?", "整数入力", 1)) tatehaba = Selection.Height takasa = ActiveCell.Top shita = takasa + tatehaba yoko = ActiveCell.Left yokohaba = Selection.Width migi = yoko + yokohaba mannaka = (shita - takasa) / 2 + takasa ActiveSheet.Shapes.AddLine(yoko, mannaka, migi, mannaka).Select With Selection .ShapeRange.Line.Weight = futosa .Placement = xlMoveAndSize End With trap: End Sub

  • Excel マクロのエラーを直したいです。

    いつもお世話になっております。 さて、下記マクロを作成(コピー&ペースト)したのですが、矢印以外のあみかけ、罫線などがセルに表示されてしまいます。 どのように修正すれば、矢印だけが表示されるようになるのでしょうか? 修正頂ければ、幸甚です。宜しくお願い致します。 ※マクロ初心者です。 (1)Sub 外部デイ利用() Dim TP, LF, WD TP = Selection.Top + (Selection.Height / 2.5) LF = Selection.Left WD = Selection.Width ActiveSheet.Shapes.AddLine(LF, TP, LF + WD, TP).Select Selection.ShapeRange.Line.Weight = 1# Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle End Sub (2)Sub 認知デイ利用() Dim TP, LF, WD TP = Selection.Top + (Selection.Height / 2.5) LF = Selection.Left WD = Selection.Width ActiveSheet.Shapes.AddLine(LF + 6, TP, LF + WD, TP).Select Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadOval Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle End Sub

専門家に質問してみよう