[[20200221114455]] 『Inputboxのキャンセルについて』(ゆるキャン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Inputboxのキャンセルについて』(ゆるキャン)

いつもお世話になっております。
過去ログを見て下記コード作成してみましたが、
Inputboxでキャンセルをしたときは処理の中止ができたのですが
、OKの時も処理が中止されてしまいました。

やりたいことは、
Sheet(1)のJ1セルが空白ならInputboxで入力をさせてから次の処理を実行させる
空白じゃなければInputboxは出さずに次の処理を実行させる
Inputboxでキャンセルされたらキャンセルとして処理をおわりにする
Inputboxで空白でOKされたらもう一度Inputboxを出す

Private Sub テストボタン_Click()
If Sheets(1).Range("J1").Value = "" Then

Dim st As String
st = InputBox("入力してください", "ここに入力する")
Sheets(1).Range("J1") = st
' Cells(1, 10)= st
End
End If
If StrPtr(st) = 0 Then

End If
次の処理

知識が乏しくまだま勉強中です。
よろしくお願いします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 Dim St As String
 Do
   St = InputBox("入力してください", "ここに入力する")
   If StrPtr(St) = 0 Then
       MsgBox "キャンセル"
       Exit Sub
   ElseIf Len(St) = 0 Then
       MsgBox "何も入力されていません。"
   Else
       Exit Do
   End If
 Loop
 MsgBox St & "が入力されました"
(BJ) 2020/02/21(金) 11:57

被ったけど折角書いたので^^;

Private Sub テストボタン_Click()

    'もし、左から1番目のシートのJ1セルが空白なら
    If IsEmpty(Sheets(1).Range("J1").Value) = True Then
        'その時はインプットボックスを表示して文字の入力を促す
        Dim st As String
        Do
            st = InputBox("入力してください", "ここに入力する")
            'もし、インプットボックスがキャンセルされたら、処理を抜ける
            If StrPtr(st) = 0 Then Exit Sub
            'もし入力が0文字より多いなら
            If Len(st) > 0 Then
                'ループを抜ける
                Exit Do
            Else
                MsgBox "空白でOKを押されました。", vbExclamation
            End If
            '繰り返し
        Loop
    End If

    'セルの値を設定
    Sheets(1).Range("J1").Value = st

    '次の処理

End Sub

こんな感じですかね

参考URL>>
https://www.relief.jp/docs/excel-vba-inputbox-cancel.html
http://officetanaka.net/excel/vba/tips/tips37.htm

解らなくなったら、インストラクターさんか
田中さんのサイトをとりあえず探ってみてください。
(まっつわん) 2020/02/21(金) 12:12


お二方さま、早急な回答をありがとうございます!

まっつわんURLまでありがとうございます!
実践はまだできていませんが、後ほど時間をつくって試します!
またわからなくなって行き詰ってしまった時、お世話になります💦
(ゆるキャン) 2020/02/21(金) 12:19


すみません、、、
もうひとつ条件を足したくて下記のようにしたのですが、うまくできません💦

やりたいことは、
Sheets(2)のA1セルが空白ならMsgbox出して終わり
Sheets(2)のA1セルが空白じゃなければ、
Sheet(1)のJ1セルが空白ならInputboxで入力をさせてから次の処理を実行させる
空白じゃなければInputboxは出さずに次の処理を実行させる
Inputboxでキャンセルされたらキャンセルとして処理をおわりにする
Inputboxで空白でOKされたらもう一度Inputboxを出す

ですが、J1セルが空白じゃないとき、次の処理をする前に、J1セルにあった値が消されてしまいます。
どのようにすればいいでしょうか?

If Sheets(2).Range("A1").Value = "" Then

    MsgBox "データを貼り付けてください", vbCritical, 
  End
  End If

If IsEmpty(Sheets(1).Range("J1").Value) = True Then

        'その時はインプットボックスを表示して文字の入力を促す
        Dim st As String
        Do
            st = InputBox("あなたの所属グループ名を入力してください。" & vbLf & "(例)神戸飲食G→神戸" & vbLf & "   大阪キタ飲食→大阪キタ", "自組織を絞りこむため", "神戸")
            'もし、インプットボックスがキャンセルされたら、処理を抜ける
            If StrPtr(st) = 0 Then Exit Sub
            'もし入力が0文字より多いなら
            If Len(st) > 0 Then
                'ループを抜ける
                Exit Do
            Else
                MsgBox "空白でOKを押されました。", vbExclamation
            End If
            '繰り返し
        Loop
    End If
    'セルの値を設定
    Sheets(1).Range("J1").Value = st
次の処理

自分で考えてみても分かりませんでした💦
よろしくお願いします><
(ゆるキャン) 2020/02/25(火) 20:41


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.