
No.5ベストアンサー
- 回答日時:
つまりこういうことですか?
●"シート2"は、以下のような感じ。
━━━━━━┳━━┳━━━
受注ナンバー ┃顧客┃請求額
━━━━━━╋━━╋━━━
1001┃ A社┃10000
━━━━━━╋━━╋━━━
1002┃ B社┃20000
━━━━━━╋━━╋━━━
1003┃ C社┃50000
━━━━━━╋━━╋━━━
●"シート1"の特定のセルに、たとえば「1001」と入力すると、上記の表から得た「A社」、「10000円」などという情報が各欄に表示される。
●上記"シート1"の特定のセルに「1001」を入力して印刷、「1002」を入力して印刷、…、という一連の繰り返し作業を自動で行わせたい。
以上でよければ、以下のようにできます。
Public Sub PrintAll()
Dim rngOrderNoArray As Range
Dim rngOrderNoForm As Range
Dim rngOrderNo As Range
Set rngOrderNoArray = Worksheets("シート2").Range("A2:A100") ★"シート2"の受注ナンバーの範囲
Set rngOrderNoForm = Worksheets("シート1").Range("A1") ★"シート1"の入力欄
For Each rngOrderNo In rngOrderNoArray
rngOrderNoForm.Value = rngOrderNo.Value
Worksheets("シート1").PrintOut
Next
End Sub
あくまでもサンプルです。上記を実行すると冒頭の動作を「A2:A100」など設定した分だけ繰り返します。途中でキャンセルできるようにしたり、などは必要に応じて追加してください。
No.6
- 回答日時:
Range(Cells(x,y),Cells(z,u)).PrintOutがポイントです。
印刷する範囲がいつも一定であればx、y、z、uは定数字です。
変わるなら、プログラム内で計算や場所(セル範囲)の表を持つ。
納品書の定位置に受注シートデータから持ってくるのは
(別質問に答えたものですが)下記の「データを移す」のところが参考に
なるでしょう。
ほかにも2シートの扱いなど参考になるでしょう。応用が広く、すっきり
していると自負しています。(全体は他の問題用ですから気にしないで)
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
'最下行数を知る
d = sh1.Range("A65536").End(xlUp).Row
MsgBox d
j = 1 'sheet2の先頭行
m = "XXX" 'Sheet1の第1行以外の値をセット
For i = 1 To d
'---A列直前の行と変わったか
If sh1.Cells(i, "A") = m Then
Else
'----変わったときA,B列をSheet2へ移す
sh2.Cells(j, "A") = sh1.Cells(i, "A") ’データを移す
sh2.Cells(j, "B") = sh1.Cells(i, "B")
m = sh1.Cells(i, "A")
j = j + 1 'Sheet2の次行へ
End If
Next i
End Sub
仕事にVBAを使うには、中級以上のスキルがいります。覚悟の程を。
No.4
- 回答日時:
>シート1の納品書内の受注ナンバーを入力する
番号の入力は納品書の「セル」と言うことでしょうか?
>シート2のデーターが自動で入る
納品書の「受注ナンバー」に入力された番号を基に機能するのですね?
この動作はボタンで実行するのですか?
それとも、シートのイベント(自動)ですか?
印刷は手動?
---------------------------------
基本的には、納品書作成(記入)マクロに受注番号を渡して納品書を作成して印刷、の繰返しをすれば良いだけです。
注番が連番の数値なら簡単ですが、それ以外なら面倒になります。
sub 連続印刷
’受注番号指定処理(開始番号・終了番号設定)
do
注番作成処理
call 請求書作成(注番)
印刷処理
終了判定処理
Loop
End Sub
のような流れになります。
No.3
- 回答日時:
こんにちは。
・シート1に納品書のフォームがある。
・シート2には数100件以上入る顧客注文リスト表がある。
・シート1の納品書に、シート2のデーターが自動で入るようになっている。
・注文リスト内全件が自動に納品書に反映され印刷したい。
結局、これだけの内容からですと、現状では、残念ながら、VBAでの解決にまでには結びつかないのではないかと思います。
ここで回答できる範囲としては、コーディングのトラブルやいくつかのピンポイントで示せるテクニックを書くだけで、初期からコードを書くものは限られています。今、具体的なコーディングでお困りのことがあれば、お教えできるかと思いますが、そうでないとしたら、私には不可能です。
No.2
- 回答日時:
こんばんは。
単純に回答が付けられないのは、「打ち出す」ものは、ひとつのシートの中のものか、それとも複数のシート全なのかどうかということですね。
もし、ひとつのシートの中のものだとすれば、同じものをプリントアウトするわけではありませんから、当然、内容が変わっていくはずです。それら、プリントアウトする前段階の部分がはっきりしないと、Do ~ While などと教えても何も役に立たないような気がします。
この回答への補足
ありがとうございます。
シート1に納品書のフォームがあり、シート2には数100件以上は入る顧客注文リスト表があります。シート1の納品書内の受注ナンバーを入力する事により、シート2のデーターが反映されシート1の納品書にデーターが自動で入るようにしました。件数は日によりまちまちですが(数件から数100件)注文リスト内全件が自動に納品書に反映され印刷したいと思います。
全くの素人でチャレンジしているので説明もうまくできませんがどうぞよろしくお願い致します。
No.1
- 回答日時:
単純に印刷するにはPrintOutメソッドを使います。
Worksheets("納品書1").PrintOut
複数のシートなら、
Sheets(Array("納品書1", "納品書2", "…")).PrintOut
とか。
もちろん「すべてのシート」だとか、あるフォルダの中のファイルをすべて、順番に開いていって印刷、ということも可能です。
そういう場合には、For 文などで必要な分だけ同じことを繰り返します。これがループです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】Worksheets().Act...
-
XL:BeforeDoubleClickが動かない
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
オートシェイプの文字が更新さ...
-
EXCEL(VBA)でシート保護がかか...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
VBAで指定シート以外の選択
-
ExcelVBA シート名を複数セルか...
-
ユーザーフォームでのリストボ...
-
【VBA】特定の文字で改行(次の...
-
VBA 最終行まで数式をコピーする
-
EXCELVBAを使ってシートを一定...
-
ワークシートを追加したときの...
-
vba 環境依存文字がListViewボ...
-
エクセルVBA Ifでシート名が合...
-
エクセルVBA ListBoxの並び...
-
エクセルのマクロで実行時エラ...
-
ExcelのVBAを使い、複数シート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】Worksheets().Act...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
【ExcelVBA】全シートのセルの...
-
Excel チェックボックスにチェ...
-
ブック名、シート名を他のモジ...
-
Excel VBA リンク先をシート...
-
エクセルで通し番号を入れてチ...
-
実行時エラー1004「Select メソ...
-
シートが保護されている状態で...
-
ExcelのVBAのマクロで他のシー...
-
オートシェイプの文字が更新さ...
-
EXCELVBAを使ってシートを一定...
-
VBAで指定シート以外の選択
-
エクセルのマクロでアクティブ...
おすすめ情報