- ベストアンサー
エクセル VBAについて
- エクセル VBAについての質問です。
- 前回の問題が解決した後、さらにいろいろ追加したいので質問します。
- 両面シールで通し番号を付けたい場合、どのようにVBAに組み込むべきか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 >回ごとの確認は不要で、・・・ MsgBox i '確認用 をいっそのこと削除してください。 Delキーを押すか、行の始めに’(アポストロフィー)をいれてもよい。 >半分まできたらメッセージを表示 今MsgBox i '確認用とある行を下記3行で置き変える。 If i=int((ft(0)+ft(1))/2) Then MsgBox "半分" & i "枚を印刷" End If
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#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はコピーしない。
補足
すみません遅くなりました。 上記の前のマクロ時に 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回ごとの確認は不要で、半分まできたらメッセージを表示にお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
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)のチェックは略してます。
補足
早速の回答ありがとうございます。 試してみましたが、コンパイルエラー 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 お忙しいところ申し訳ございませんが、よろしくお願いいたします。
補足
本当にいつも丁寧な回答ありがとうございます。 最後に、マクロをスタートさせる場合”印刷”というボタンをつくり実行させたいのですが、数字はある特定のセルに入力し、その数字を拾って実行させたいのです。 本当にお手数ですが、よろしくお願いいたします。