InputBox関数についての教えてください

このQ&Aのポイント
  • InputBox関数は、Excel VBAで使用される関数の一つです。
  • この関数を使用することで、ユーザーに対してダイアログボックスを表示し、入力を求めることができます。
  • しかし、Type:=2の場合、数値のみを入力することができ、文字列の入力はできません。WindowsXP SP3およびExcel 2003の環境では、文字列を入力するための別の方法を使用する必要があります。
回答を見る
  • ベストアンサー

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

noname#201736
noname#201736

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

問題点が2箇所です。 Dim tuika As Double では型があいません。 また、 If tuika = False Then Exit Sub も型ちがいのため修正が必要です。 Sub 追加()   Dim tuika As String   tuika = Application.InputBox( _   Title:="追加", _   Prompt:="追加する項目を【全角大文字】で入力して下さい。", _   Left:=700, _   Top:=100, _   Type:=2)   If tuika = "" 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

noname#201736
質問者

お礼

ご回答ありがとうございます。 問題解決しました。

その他の回答 (2)

回答No.3

(1) tuikaの型が違います(stringにする) (2) If tuika = False Then Exit Subを   If tuika = "" Then Exit Sub に変更する マクロは以下の様になると思います。 Sub 追加() Dim tuika As String tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する項目を【全角大文字】で入力して下さい。", _ Left:=700, _ Top:=100, _ Type:=2) If tuika = "" 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

noname#201736
質問者

お礼

ご回答ありがとうございます。 問題解決しました。

  • f272
  • ベストアンサー率46% (7998/17100)
回答No.1

これ Dim tuika As Double のせいでしょうね。文字列では型が合いません。

noname#201736
質問者

お礼

ご回答ありがとうございます。 問題解決しました。

関連するQ&A

  • エクセルVBAの記述で・・・OTL

    エクセルVBAの記述で・・・OTL VBA初心者です。 まず、私が記述した内容を書きます。 Sub 実践練習() Dim tuika As String tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する内容を入力して下さい。", _ Left:=650, _ Top:=100, _ Type:=2) If Worksheets("Sheet2").Range("G10").Value <> " FALSE " Then MsgBox "OKです", vbOKOnly + vbDefaultButton2, "追加完了" With Worksheets("Sheet2") .Range("G10").Value = tuika LastRow = Worksheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet3").Range("A" & LastRow).Value = Worksheets("Sheet2").Range("G10").Value End With Else MsgBox "入力が不足しています。", vbOKOnly + vbCritical, "入力ミス" End If End Sub() 完成させたいことは・・・ Sheet1に存在するInputbox(ボタン)を使用し、 Sheet2のG10にFALSE以外が入力されたときは、 MsgBox追加完了のダイアログを表示してSheet2のG10値をSheet3のA列に順番に転送させる。 もしFALSEが入力されてしまったら、 MsgBox入力ミスを表示させて、 Sheet2のG10の値(FALSE)を削除しなさい。 と、記述したいのです。 勿論、上記の記述は完成していません(泣 どなたか、ご教授の程、何卒宜しくお願い致します。 (上記の完成型をお待ちしてます m(_ _)m ) 【環境】 OS:WindowsXP Pro Excel:2003

  • エクセルのフォームのVBAについて

    VBAがまったくわからないのに参考書を見て高度な事に挑戦しています フォームは作れてフォームをクリックやら入力やらして作ったOKボタンを押すと シート2のA1B1C1‥の列に入力文字だけが羅列されます。 しかし次にやろうとするとA2B2C2‥と下に行かず又A1B1C1‥の列の文字が変更になり続きません。何がいけないのでしょうか? Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row .Range("A" & LastRow).Value = Worksheets("sheet1").Range("A5").Value .Range("B" & LastRow).Value = Worksheets("sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("A10").Value End With End Sub と参考書とおりいれたのですが‥。教えて下さい。

  • エクセル マクロ IF関数について

    Sheet1にグループボックス内で、チェックボタンで項目を選択するとA1に記載されるように作成、マクロで入力ボタン作成しボタンをクリックするとSheet2に記載されるように作りました。しかし、項目が多いためSheet2を見るとABCDEFGなどの列に空白が目立ち使いづらいです。 そこでIF関数を使い何とか出来ないでしょうか? 例)SHEET1 B2に原因のグループボックスにカテゴリー(チェックボックスにて1)入力ミス、2)人、3)機械) B3に対応のグループボックスにカテゴリー(チェックボックスにて1)外注、2)修正、3)報告) と作り、それらがチェックされていたら、A1の列に表示され入力ボタンを押したら、Sheet2のAには原因、Bには対応と記載されるようにしたいです。その時Sheet1のA列に空白があれば、Sheet2の列に表示するようにしたいです。 実際のマクロ記入 Sub 入力() Dim LastRow As Long With Worksheets("Sheet2") LastRow = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1 .Range("A" & LastRow).Value = Worksheets("Sheet1").Range("A6").Value .Range("B" & LastRow).Value = Worksheets("Sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("Sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("Sheet1").Range("A9").Value .Range("E" & LastRow).Value = Worksheets("Sheet1").Range("A10").Value .Range("F" & LastRow).Value = Worksheets("Sheet1").Range("A12").Value .Range("G" & LastRow).Value = Worksheets("Sheet1").Range("A13").Value .Range("H" & LastRow).Value = Worksheets("Sheet1").Range("A15").Value .Range("I" & LastRow).Value = Worksheets("Sheet1").Range("A16").Value .Range("J" & LastRow).Value = Worksheets("Sheet1").Range("A19").Value End With End Sub お願いします教えてください。

  • 他のブックでマクロを実行するには?

    以下のマクロを実行すると同一ブック内の他のシートに入力 されますが、これを他のブックのシートに入力されるように するには、具体的にどのようにすればいいのでしょうか? ご教授ください。 ---------------------------------------------------------------- Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("B" & Rows.Count).End(xlUp).Row + 1 .Range("B" & LastRow).Value = Worksheets("sheet1").Range("B1").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("B3").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("B5").Value .Range("E" & LastRow).Value = Worksheets("sheet1").Range("B7").Value .Range("F" & LastRow).Value = Worksheets("sheet1").Range("B9").Value .Range("G" & LastRow).Value = Worksheets("sheet1").Range("B11").Value End With End Sub

  • 教えてマクロの記述?

    シート1に記述した内容をシート2に一覧形式で入力するマクロを以下の通り作成しました。 シート1に記述した内容を、別のブックのシートに一覧形式で入力していくマクロに変更するには どのようにマクロの記述をすれば宜しいのでしょうか?マクロの初心者にも分るようにご教授 いただければ助かります。よろしくお願いします。 Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("B" & Rows.Count).End(xlUp).Row + 1 .Range("B" & LastRow).Value = Worksheets("sheet1").Range("B1").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("B3").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("B5").Value .Range("E" & LastRow).Value = Worksheets("sheet1").Range("B7").Value .Range("F" & LastRow).Value = Worksheets("sheet1").Range("B9").Value .Range("G" & LastRow).Value = Worksheets("sheet1").Range("B11").Value End With 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の位置

    エクセル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の値で検索して転記するマクロ

    1.InputBoxを3回表示させます。 2.ユーザーに入力してもらいます。 入力できるのは半角英数字のみでそれ以外は エラーメッセージを出したいです。 3.1回目は18桁か22桁以外の場合、 2回目と3回目は4桁以外の場合はMsgBoxを表示して 再入力を促します。 4.InputBoxに入力された値の3個を連結した値で Sheet2のA列を検索して 合致したらその行のG列の値を見ます。 5.G列に"済"とあったら MsgBoxを表示して 中止するか継続するか判断します。 6.継続した場合 その該当行の各列の値をSheet1にそれぞれ転記します。 Sheet2の該当行のB列→Sheet1のセルB3 Sheet2の該当行のC列→Sheet1のセルC3 Sheet2の該当行のD列→Sheet1のセルD3 Sheet2の該当行のE列→Sheet1のセルE3 Sheet2の該当行のF列→Sheet1のセルF3 7.かつSheet2の該当行のG列に 済 と転記します。 すでに済が記入されている場合は上書です。 以下のように作成しましたがエラーで動かなくて動作確認が出来ません。 どう直せばいいのか教えてください。 イレギュラー時の対応処理が必要だとも思うのですが動作しない為 思いつきません。 記述が滅茶苦茶なのですがこれが限界です。申し訳ありません。 Sub 表示板作成() Dim 検索値1 Dim 検索値2 Dim 検索値3 Dim 検索値4 Dim 判定値 Dim 判断 Dim 記録 Dim 確認 検索値4 = 検索値1&検索値2&検索値3 Do 検索値1 = Application.InputBox("型番を入力してください") If Len(検索値) < 18 Then MsgBox "18桁未満です。再入力しますか?" Loop Else Exit Do '検索値2と3も上記と同じ記述をここへ入れる '(現在省略) End If 判定値 = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 7, 0) If 判定値 = "済" Then 判断 = MsgBox("発行済みです。再度データ取得しますか?", vbYesNo) Else Select Case 判断 Case vbNo Exit Sub Case vbYes Range("B3").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 2, 0) Range("B4").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 3, 0) Range("B5").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 4, 0) Range("B6").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 5, 0) Range("B7").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 6, 0) End Select End If 記録 = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 7, 0) 記録.Value = "済" 確認 = MsgBox("これは●●用です。いいですか?", vbYesNo) Select Case 確認 Case vbNo Exit Sub Case vbYes Call 印刷 End Select End Sub

  • リストボックスの内容を検索したいが...

    エクセル2019を使っています。 添付画像のようにユーザーフォームにテキストボックスとリストボックスを作り、テキストボックスに入力した文字でリストボックスの内容を検索しようとコードを作成しました。 Private Sub TextBox1_Change() Dim LastRow As Integer Dim rng As Range, r As Range With Worksheets("Sheet1") If .AutoFilterMode <> True Then .Range("A1").AutoFilter End If LastRow = .Cells(Rows.Count, 1).End(xlUp).Row .Range("A1").AutoFilter 1, "*" & TextBox1.Value & "*" If .Cells(Rows.Count, "A").End(xlUp).Row > 1 Then Set rng = .Range("A2:A" & LastRow).SpecialCells(xlCellTypeVisible) Else Me.ListBox1.Clear Exit Sub End If End With Me.ListBox1.Clear With Me.ListBox1 For Each r In rng .AddItem r.Value .List(.ListCount - 1, 1) = r.Offset(0, 1).Value Next r End With End Sub Private Sub UserForm_Initialize() Dim LastRow As Integer Dim rng As Range, r As Range With Worksheets("Sheet1") If .AutoFilterMode <> True Then .Range("A1").AutoFilter End If LastRow = .Cells(Rows.Count, 1).End(xlUp).Row Set rng = .Range("A2:A" & LastRow) End With With Me.ListBox1 .ColumnCount = 1 For Each r In rng .AddItem r.Value .List(.ListCount - 1, 1) = r.Offset(0, 1).Value Next r End With ListBox1.ListIndex = 0 End Sub とりあえず検索はできるのですが、使用されていない文字や記号を入力したあとにバックスペースキーで入力した文字や記号を削除するとリストボックスの内容が意図した内容で表示されません。 どこを修正したらいいでしょうか。

  • excel2003 マクロ 複数セルに文字を追記

    オートフィルタ後、E列の文字が入力されているセルにのみ 頭に「花」という文字をいれたい。 ということをしたいです。 もともと入っている文字に追記をしたいのですが どうすればよいでしょうか? オートフィルタした値は、すべて同じではないです。 アドバイスお願いします。 Sub オートフィルタ後花をつける() moji = "花" With Worksheets("Sheet1")    .Range("E3",Range("E65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Select Selection.Value = moji & ActiveCell.Value←これではだめですよね・・・ End With End Sub

専門家に質問してみよう