Excel VBA質問箱 IV

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

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


6135 / 13645 ツリー ←次へ | 前へ→

【47017】印刷枚数を変数にする場合 かとぼん 07/2/25(日) 9:37 質問[未読]
【47019】Re:印刷枚数を変数にする場合 りん 07/2/25(日) 9:57 回答[未読]
【47021】Re:印刷枚数を変数にする場合 かとぼん 07/2/25(日) 12:47 お礼[未読]
【47022】Re:印刷枚数を変数にする場合 Kein 07/2/25(日) 14:13 回答[未読]
【47020】Re:印刷枚数を変数にする場合 ぱっせんじゃー 07/2/25(日) 9:59 発言[未読]

【47017】印刷枚数を変数にする場合
質問  かとぼん  - 07/2/25(日) 9:37 -

引用なし
パスワード
   みなさんいつもありがとうございます。
A10からA68で一番大きい数字の値で印刷枚数を指定する場合
下記では動作しません。
どこがいけないのでしょうか?
Private Sub CommandKYA4印刷_Click()
 
  Dim i As Integer
  Dim MyR As Range

  Set MyR = Range("A10:A68")
    With Application
      If .Count(MyR) > 0 Then
        Cells(.Match(.Max(MyR), MyR.EntireColumn, 0), 1).Value = i
      End If
    End With
  Set MyR = Nothing


  Sheet4.Select
  Application.ScreenUpdating = False
   
  ActiveSheet.PrintOut From:=1, To:=i, Copies:=1
    
   
   Application.ScreenUpdating = True

End Sub

【47019】Re:印刷枚数を変数にする場合
回答  りん E-MAIL  - 07/2/25(日) 9:57 -

引用なし
パスワード
   かとぼん さん、おはようございます。

>A10からA68で一番大きい数字の値で印刷枚数を指定する場合
>下記では動作しません。
>どこがいけないのでしょうか?

増やしたいのはページ数ではなくて、枚数(部数)ですよね?

>Private Sub CommandKYA4印刷_Click()
> 
>  Dim i As Integer
>  Dim MyR As Range


>  Set MyR = Range("A10:A68")
   If Application.WorksheetFunction.Count(MyR) = 0 Then
    i = 0
   Else
    i = Application.WorksheetFunction.Max(MyR)
   End If
>  Set MyR = Nothing
>
>
>  Application.ScreenUpdating = False
  If i = 0 Then
    MsgBox "A10:A68に数値なし", vbExclamation
  Else
    Sheet4.PrintOut From:=1, To:=1, Copies:=i
  End If
>    
>   
>   Application.ScreenUpdating = True
>
>End Sub

【47020】Re:印刷枚数を変数にする場合
発言  ぱっせんじゃー  - 07/2/25(日) 9:59 -

引用なし
パスワード
   ぱっと見ですが、
↓の左辺と右辺が逆になっていませんか?

>Cells(.Match(.Max(MyR), MyR.EntireColumn, 0), 1).Value = i

【47021】Re:印刷枚数を変数にする場合
お礼  かとぼん  - 07/2/25(日) 12:47 -

引用なし
パスワード
   うまくできました。
ありがとうございました。

【47022】Re:印刷枚数を変数にする場合
回答  Kein  - 07/2/25(日) 14:13 -

引用なし
パスワード
   うまくできたとの事ですが、最初の質問と違って
>Set MyR = Range("A10:A68")
検索範囲が A10 からの場合、Match関数は 10行目 を 1 として
相対的な行を返します。つまり、仮に最大の数値が A12 で見つかった
とすると、変数 i には A12 の値ではなく A3 の値が入ることに
なります。その事を正しく認識されていれば良いのですが。
あと、検索範囲に数値が入力されていないとき、i = 0 として
PrintOut の引数に渡されてしまうから、If .Count(MyR) > 0 Then
の構文に Else を追加して、処理を中止させなくてはならないでしょう。
もちろん変数 i への代入は、右辺と左辺が逆なので完全に間違いと
言えます。これらの点を修正するなら

Private Sub CommandKYA4印刷_Click()
  Dim Mx As Integer, i As Integer
  Dim MyR As Range

  Set MyR = Range("A10:A68")
  With WorksheetFunction
    If .Count(MyR) > 0 Then
     Mx = .Match(.Max(MyR), Range("A:A"), 0) + 9
      i = Cells(Mx, 1).Value
    Else
     MsgBox "数値が入力されたセルがありません", 48
     Set MyR = Nothing: Exit Sub
    End If
  End With
  Set MyR = Nothing
  Application.ScreenUpdating = False
  Sheet4.PrintOut From:=1, To:=i, Copies:=1
  Application.ScreenUpdating = True
End Sub

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