Excel VBA質問箱 IV

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

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


6955 / 13646 ツリー ←次へ | 前へ→

【42096】組込inputboxを自動でキャンセルしたい 雅(みやび) 06/8/31(木) 18:22 質問[未読]
【42098】Re:組込inputboxを自動でキャンセルしたい Ned 06/8/31(木) 22:20 発言[未読]
【42099】Re:組込inputboxを自動でキャンセルしたい Ned 06/8/31(木) 23:11 発言[未読]
【42109】Re:組込inputboxを自動でキャンセルしたい 雅(みやび) 06/9/1(金) 12:23 お礼[未読]
【42106】Re:組込inputboxを自動でキャンセルしたい ハト 06/9/1(金) 11:14 発言[未読]

【42096】組込inputboxを自動でキャンセルしたい
質問  雅(みやび)  - 06/8/31(木) 18:22 -

引用なし
パスワード
   初めまして。よろしくお願いします。
以下の事について質問いたします。


  For I = 3 To NOWLINE - 2 Step 1
Application.DisplayAlerts = False
   On Error Resume Next
    Cells(I, 30).Select

  ActiveCell.Value = "=IF(LEFT(" & Cells(I, 3) & ",1)=" & Chr(34) & "1" & Chr(34) & ",100,IF(LEFT(" _
中略& ")))))))"  '大費目入力
  
  Next I

上記の様なセルに順番に費目(決められた数値)を自動入力するループで、
「合計行が複数あります範囲していしてください」
と組込ダイアログボックスが出ます。
ひたすらキャンセルボタンを押し続けると、(費目入力行回数終了後)マクロ完了して期待した入力は完成されています。
この途中で出るダイアログボックスは、2000のバージョンではでなかったので、解らなくなっています。
ひたすらキャンセルボタンを自動的に押す事はできますでしょうか?
教えてください。

【42098】Re:組込inputboxを自動でキャンセルしたい
発言  Ned  - 06/8/31(木) 22:20 -

引用なし
パスワード
   ▼雅(みやび) さん:
こんにちは。
試してみましたが、状況が再現しませんでした。
差し支えなければ、こちらでも確認できるコードを提示してみてください。

また、
>(決められた数値)を自動入力する
のが目的ですか?
提示のコードは、C列の値によって、数値を表示する『関数』を条件分岐させている、
つまり、IF関数にはネスト制限があるので、値によって入れる数式を変更しているように見えます。

数式を入れる事が目的なら、

Sub sample()
  Dim NOWLINE As Long

  NOWLINE = 40 '仮に。
  'NOWLINE = Cells(65536, 3).End(xlUp).Row'(C列最終行なら)
  Range(Cells(3, 30), Cells(NOWLINE - 2, 30)).Formula _
    = "=IF(OR(C3="""",RIGHT(C3,1)=""計""),""""," _
    & "IF(AND(LEFT(C3,2)*1>31,LEFT(C3,2)*1<40),320," _
    & "IF(OR(LEFT(C3,2)=""31"",AND(LEFT(C3,2)*1>70,LEFT(C3,2)*1<74))" _
    & ",LEFT(C3,2)*10,LEFT(C3,1)*100)))"
End Sub

数値なら、直接、値を代入します。

Sub sample2()
  Dim i As Long
  Dim NOWLINE As Long
  Dim n As Long

  NOWLINE = 10 '仮に。
  'NOWLINE = Cells(65536, 3).End(xlUp).Row'(C列最終行なら)
  For i = 3 To NOWLINE - 2
    If Right(Cells(i, 3).Value, 1) <> "計" Then
      n = Val(Left(Cells(i, 3).Value, 2))
      Select Case n
        Case 31, 71, 72, 73
          Cells(i, 30).Value = n * 10
        Case Is <= 30
          Cells(i, 30).Value = (n \ 10) * 100
        Case Is <= 39
          Cells(i, 30).Value = 320
        Case Else
          Cells(i, 30).Value = (n \ 10) * 100
      End Select
    End If
  Next i
End Sub

【42099】Re:組込inputboxを自動でキャンセルしたい
発言  Ned  - 06/8/31(木) 23:11 -

引用なし
パスワード
   ほそく。先ほどのは、本題と外れているアドバイスですから。念の為。

行    C列     ・・    AD列
2    費目         大費目
3    1000         100
4    1000         100
5    1000計        
6    1100         100
7    1100         100
8    1100計        
9    3000         300
10    3000         300
11    3000計            
12    3110         310
13    3110         310
14    3110計        
15    3120         310
16    3120         310
17    3120計            
18    3210         320
19    3210         320
20    3210計            

状況は、こんな感じだと推測しています。
ダイアログボックスが出るところは、ご提示の部分とは別の箇所ではないでしょうか。
マクロの実行を[ステップイン]で[F8]キーを押しながら、1ステップずつ実行してみて、
ダイアログボックスが出る箇所のコードを提示してみてください。

また、これは余計な事かもしれませんが、
文字だけのやり取りって、気持ちが伝わりにくいです。
あまり深読みされないほうが良いですヨ^ ^
みなさん親切な方ですから、レスに対して解らないところがあれば
それに対して追加で訊いてもらえれば、更に説明されるはずです。
#まぁ、今後は、という事で。

【42106】Re:組込inputboxを自動でキャンセルしたい
発言  ハト  - 06/9/1(金) 11:14 -

引用なし
パスワード
   こんにちは

▼雅(みやび) さん:

>ひたすらキャンセルボタンを自動的に押す事はできますでしょうか?
>教えてください。

この場合、キャンセルボタンをひたすら押す事より
ダイアログボックスが出ないようにするのが目的ですよね?

でしたら、『DisplayAlerts』を使って対応できませんか?

(当方2000なんで確認できません)

【42109】Re:組込inputboxを自動でキャンセルしたい
お礼  雅(みやび)  - 06/9/1(金) 12:23 -

引用なし
パスワード
   初めまして。こんにちは。
的確なアドバイスと乱暴な質問で、ほぼ内容を把握されてしまうなど・・・
申し訳ありません。

ご指導のありました、ステップインでずっと見ていました。
このVBA、真似から始まり、試行錯誤でかなり無駄な部分がある事を認識
しながら、元々を5年前に作ったものの為に、その本人がコメントだけ
では理解できなくなっており・・・
結果、ステップで見ていくと、今回の僕の質問範囲について、キャンセル
を押し続けると処理が完了する・・・と言う自分の言葉に疑問を感じて、
不必要なパートかどうかをよくステップを見ながら処理させました。

結果は不必要なループでした。申し訳ありません。
確かに、本題の目的には至っておりませんが、不必要だったと言う事で、
問題は解決できました。
お騒がせしました。
ありがとうございます。

これもヒントのおかげです。

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