こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル vbaについて その2

前回質問させていただき問題が解決しました。
さらにいろいろ付け加えたいので質問させていただきます。
前回のマクロです。
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
n = TextBox1.Value
For i = 1 To n
Cells(10, "A") = i
TextBox1.PrintObject = False 'テキストボックスは印刷しない
Range("a1:j10").PrintOut '範囲は適当に修正のこと
MsgBox i '確認用
Next i
End If
End Sub
今回作成したいものが、両面シールで通し番号を打ちますが、100枚あれば表面に1から50裏面に51から100としたいのです。
印刷枚数を指定して且つ裏印刷の時には、51からのようにしたいと思っております。
どの様に上記vbaに組み込めばよろしいでしょうか?
よろしくお願いいたします。

投稿日時 - 2004-08-17 11:50:05

QNo.965005

a32

困ってます

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

#2です。
>回ごとの確認は不要で、・・・
MsgBox i '確認用
をいっそのこと削除してください。
Delキーを押すか、行の始めに’(アポストロフィー)をいれてもよい。
>半分まできたらメッセージを表示
今MsgBox i '確認用とある行を下記3行で置き変える。
If i=int((ft(0)+ft(1))/2) Then
MsgBox "半分" & i "枚を印刷"
End If

投稿日時 - 2004-08-24 20:07:43

補足

本当にいつも丁寧な回答ありがとうございます。
最後に、マクロをスタートさせる場合”印刷”というボタンをつくり実行させたいのですが、数字はある特定のセルに入力し、その数字を拾って実行させたいのです。
本当にお手数ですが、よろしくお願いいたします。

投稿日時 - 2004-08-24 22:32:48

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

#1の補足に対して。
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
は本来は1行です。1行にして見てください。
その際はスペースとアンターバー(VBのプログラム行継続
)を取り除くこと。
旨く行かない時はVBEのVBAProjectのSheet1(Textbox1
を貼りつけたシート)をクリックして、
「General」はTextbox1、「Declaration」はKeyUp
を選んで、
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

End Sub
の間に回答をコピーしてください。
勿論最初行Private Subと最後行End Subはコピーしない。

投稿日時 - 2004-08-17 16:02:44

補足

すみません遅くなりました。
上記の前のマクロ時に
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
n = TextBox1.Value
For i = 1 To n
Cells(10, "A") = i
TextBox1.PrintObject = False 'テキストボックスは印刷しない
Range("a1:j10").PrintOut '範囲は適当に修正のこと
MsgBox i '確認用
Next i
End If
End Sub
ですが、msgboxを半分まできたら表示(たとえば100枚なら50枚印刷時にメッセージを表示)のようにできますか? 
割り切れない場合は繰り上げにしたいのです。
ですので1回ごとの確認は不要で、半分まできたらメッセージを表示にお願いします。

投稿日時 - 2004-08-24 16:47:41

ANo.1

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal _
Shift As Integer)
If KeyCode = 13 Then
n = TextBox1.Value
ft = Split(n, "-")
If UBound(ft) <> 1 Then
MsgBox "値エラー"
Exit Sub
End If
For i = ft(0) To ft(1)
Cells(10, "A") = i
TextBox1.PrintObject = False 'テキストボックスは印刷しない
Range("a1:j10").PrintOut '範囲は適当に修正のこと
MsgBox i '確認用
Next i
End If
End Sub
前回と仕掛けは変っていません。入力で1-50や2-3や51-100のように半角ハイフンで区切って2つの数字をいれてください。1と50、2と3、51と100のように分離して、配列的なものft(0)とft(1)に分けてくれます。
これを「からFrom」と「へTo」の値に使えば良い。
ft(0)<ft(1)のチェックは略してます。

投稿日時 - 2004-08-17 13:11:27

補足

早速の回答ありがとうございます。
試してみましたが、コンパイルエラー subまたはfunctionが定義されていません!と出てしまい
先頭から Shift As Integer) まで黄色になっており
ft = Split(n, "-")のsplit部分にカーソルが来ておりました。
下記が貼り付け状態です。

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal _
Shift As Integer)
If KeyCode = 13 Then
n = TextBox1.Value
ft = Split(n, "-")
If UBound(ft) <> 1 Then
MsgBox "値エラー"
Exit Sub
End If
For i = ft(0) To ft(1)
Cells(10, "A") = i
TextBox1.PrintObject = False 'テキストボックスは印刷しない
Range("a1:j10").PrintOut '範囲は適当に修正のこと
MsgBox i '確認用
Next i
End If
End Sub
お忙しいところ申し訳ございませんが、よろしくお願いいたします。

投稿日時 - 2004-08-17 14:47:19

あなたにオススメの質問