Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10112 / 13644 ツリー ←次へ | 前へ→

【23511】Escキーを押したとき 38L 05/3/25(金) 10:55 質問[未読]
【23512】Re:Escキーを押したとき IROC 05/3/25(金) 11:08 回答[未読]
【23516】Re:Escキーを押したとき 38L 05/3/25(金) 11:55 発言[未読]
【23517】Re:Escキーを押したとき ぽちこ 05/3/25(金) 11:57 回答[未読]
【23519】Re:Escキーを押したとき IROC 05/3/25(金) 13:13 回答[未読]
【23533】Re:Escキーを押したとき 38L 05/3/25(金) 18:08 お礼[未読]
【23523】Re:Escキーを押したとき 38L 05/3/25(金) 14:28 発言[未読]
【23524】Re:Escキーを押したとき 38L 05/3/25(金) 14:31 発言[未読]
【23566】Re:Escキーを押したとき ぽちこ 05/3/28(月) 17:30 回答[未読]
【23609】Re:Escキーを押したとき 38L 05/3/30(水) 10:40 お礼[未読]

【23511】Escキーを押したとき
質問  38L  - 05/3/25(金) 10:55 -

引用なし
パスワード
   intCounter = Application.InputBox("列番は?")
strSuuti = Application.InputBox("数字は?")
  Cells(4, intCounter) = strSuuti
strSuuti = Application.InputBox("数字は?")
  Cells(5, intCounter) = strSuuti
以下続…

と入力している際に、入力ミスが発覚し、現在の入力項目より、ひとつ前に戻れる様にしたいのですが、どういう文にすればいいのでしょうか?
ぜひ、ご教示お願い致します。

【23512】Re:Escキーを押したとき
回答  IROC  - 05/3/25(金) 11:08 -

引用なし
パスワード
   以下続…というのは、1行ずつ下のセルにまったく同じように続くのでしょうか?

どのくらい、どのように続くのか正確に教えていただけませんか?

【23516】Re:Escキーを押したとき
発言  38L  - 05/3/25(金) 11:55 -

引用なし
パスワード
   説明不足で申し訳ありません。
おっしゃる通り、入力していくセルはひとつずつ下に行きます。
最大で「25」行目までです。
ひとつ入力したら次の行へ、またひとつ入力したら次の行へ…
と続けて入力したいのですが、その際入力をミスったとき、ひとつ戻る(3行目を入力中に2行目のミスに気づいたら、2行目の入力項目にもどる)事をしたいのです。
今の方法だと、「途中でミスに気づいても、25行一気に入力した後に、また初めからやり直し」という状況なのです。

【23517】Re:Escキーを押したとき
回答  ぽちこ  - 05/3/25(金) 11:57 -

引用なし
パスワード
   Escキーではないのですが、ダイアログのキャンセルを判定したらどうでしょうか?

INP_COL:
  intCounter = Application.InputBox("列番は?")
  
INP_ROW4:
  strSuuti = Application.InputBox("数字は?")
  If strSuuti = False Then
    GoTo INP_COL
  Else
    Cells(4, Val(intCounter)) = strSuuti
  End If

INP_ROW5:
  strSuuti = Application.InputBox("数字は?")
  If strSuuti = False Then
    GoTo INP_ROW4
  Else
    Cells(5, Val(intCounter)) = strSuuti
  End If

INP_ROW6:
  strSuuti = Application.InputBox("数字は?")
  If strSuuti = False Then
    GoTo INP_ROW5
  Else
    Cells(6, Val(intCounter)) = strSuuti
  End If
      ・
      ・
      ・
      ・

【23519】Re:Escキーを押したとき
回答  IROC  - 05/3/25(金) 13:13 -

引用なし
パスワード
   Dim c As Long
Dim x As String
Dim i As Long
Dim ret As VbMsgBoxResult

  c = Application.InputBox("列番は?", Type:=1)
  
  For i = 4 To 25
    x = Application.InputBox("数字は?", _
      "セル = " & Cells(i, c).Address(0, 0), Type:=2)
    
    If x = "False" Then
      ret = MsgBox("[中止]  = 終了" & Chr(13) & _
             "[再試行] = 1つ前に戻る" & Chr(13) & _
             "[無視]  = 続行", vbAbortRetryIgnore)
    
      Select Case ret
      Case vbAbort
        Exit Sub
      Case vbRetry
        i = i - 2
      Case vbIgnore
        Cells(i, c).Value = x
      End Select
    Else
      Cells(i, c).Value = x
    End If
    
  Next i

【23523】Re:Escキーを押したとき
発言  38L  - 05/3/25(金) 14:28 -

引用なし
パスワード
   上記のやり方だと,Escキーを押しても(キャンセルを押したときと)同じ結果が出ました。
が、「0」と入力してもキャンセルをクリックしたものと同じ結果になるのはどうしてでしょうか?
INP_ROW1:
  strSuuti = Application.InputBox("1の件数")
If strSuuti = False Then
    GoTo INP_COL
  Else
    Cells(1, Val(intCounter)) = strSuuti
  End If
  
INP_ROW2:
  strSuuti = Application.InputBox("2の件数")
If strSuuti = False Then
    GoTo INP_COL
  Else
    Cells(2, Val(intCounter)) = strSuuti
  End If
「INP_ROW2」を入力しているときに「0」を入力すると「INP_ROW1」にもどってしまうんです。

【23524】Re:Escキーを押したとき
発言  38L  - 05/3/25(金) 14:31 -

引用なし
パスワード
   ごめんなさい。
上記→「ぽちこ」さんの方法です。
ほんとうにごめんなさい。

【23533】Re:Escキーを押したとき
お礼  38L  - 05/3/25(金) 18:08 -

引用なし
パスワード
   お答えありがとうございます。
問題が解決できそうです。
それにしても、
MsgBox("[中止]  = 終了" & Chr(13) & _
             "[再試行] = 1つ前に戻る" & Chr(13) & _
             "[無視]  = 続行", vbAbortRetryIgnore)
なんて方法があるのは驚きでした。
すごいです。とても勉強になりました。

【23566】Re:Escキーを押したとき
回答  ぽちこ  - 05/3/28(月) 17:30 -

引用なし
パスワード
   ▼38L さん:
>上記のやり方だと,Escキーを押しても(キャンセルを押したときと)同じ結果が出ました。
>が、「0」と入力してもキャンセルをクリックしたものと同じ結果になるのはどうしてでしょうか?
>INP_ROW1:
>  strSuuti = Application.InputBox("1の件数")
>If strSuuti = False Then             ※※※
↑↑↑↑↑↑↑↑↑↑↑↑↑
If strSuuti = "False" Then

にしたら「0」入力で戻らなくなると思います。
中途半端な回答でごめんさいでした。


>    GoTo INP_COL
>  Else
>    Cells(1, Val(intCounter)) = strSuuti
>  End If
>  
>INP_ROW2:
>  strSuuti = Application.InputBox("2の件数")
>If strSuuti = False Then             ※※※
↑↑↑↑↑↑↑↑↑↑↑↑↑
If strSuuti = "False" Then


>    GoTo INP_COL
>  Else
>    Cells(2, Val(intCounter)) = strSuuti
>  End If
>「INP_ROW2」を入力しているときに「0」を入力すると「INP_ROW1」にもどってしまうんです。

【23609】Re:Escキーを押したとき
お礼  38L  - 05/3/30(水) 10:40 -

引用なし
パスワード
   返事が遅くなってしまい申し訳ありません。
とても参考になります。
どうもありがとうございました。

10112 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free