- ベストアンサー
リストから納品書の印刷
- リストにあるデータの納品書の印刷について教えていただき、ありがとうございました。
- マクロを実行すると、3行目までしか印刷をしてくれないのですが、それはどうしてでしょうか。
- 勉強不足なので何度も質問してごめんなさい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- エクセルのマクロについて(再び)
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1185170 で、質問させていただいたものです。 教えていただき、印刷できるようになったのですが、 Sub 楕円1_Click() Dim i '●●変数の宣言●● Worksheets("sheet1").Activate For i = 2 To 3 '300 Cells(1, "F") = i Range("a1:c8").PrintOut Next i End Sub というマクロを組んでいます。 >For i = 2 To 3 を >For i = 2 To 50 としてみましょう >こうすると、iが2~50まで変化します。 >で、50-1=49枚印刷されます。 と、教えていただいたのですが、 データが絶対に50件と決まっているわけではないので、データがあるところだけを印刷する場合、どのようにしたら良いのでしょうか。 教えてください。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- VBA リストボックスについて
VBA初心者です。どうぞよろしくお願いします。 ユーザーフォームにタブつきのリストボックスを作りたいと思っています。 リストはsheet1の中にあります。 A B C D・・・ 1 NO 品名 売場 2 1 いちご 果物 3 2 みかん 果物 4 3 もも 果物 5 4 ハクサイ 野菜 6 5 キャベツ 野菜 7 6 きゅうり 野菜 8 7 9 果物のタブには、果物の品名が表示される。 1 いちご 2 みかん 3 もも 野菜のタブには、野菜の品名が表示される。 4 ハクサイ 5 キャベツ 6 きゅうり 青果のタブには、果物、野菜が表示される。 1 いちご 2 みかん 3 もも 4 ハクサイ 5 キャベツ 6 きゅうり 本を見ながら格闘しておりますが、きっと的違いで滅茶苦茶なことをしているのだと思います。 どうにも出来ず困っております。どなたか教えていただけないでしょうか。よろしくお願いします。 Private Sub UserForm_Initialize() Dim LastRow As Long Dim i As Integer Dim ListBoxNo As Integer Dim ListBox As Control Dim Listtabu(3) As Long 'タブの数 For i = 1 To 3 Listtabu(i) = 0 Next i Worksheets("sheet1").Activate With Worksheets("sheet1") LastRow = .Range("A65536").End(xlUp).Row For i = 2 To LastRow If Worksheets("sheet1").Range(Cells(i, 3)) = "果物" Then ListBoxNo = 1 Set ListBox = 果物 果物.List = Worksheets("sheet1").Range(Cells(i, 1), Cells(i, 2)).Value End If If Worksheets("sheet1").Range(Cells(i, 3)) = "野菜" Then ListBoxNo = 2 Set ListBox = 野菜 野菜.List = Worksheets("sheet1").Range(Cells(i, 1), Cells(i, 2)).Value End If If Worksheets("sheet1").Range(Cells(i, 3)) = "果物" & "野菜" Then ListBoxNo = 3 Set ListBox = 青果 青果.List = Worksheets("sheet1").Range(Cells(i, 1), Cells(i, 2)).Value End If ListBox.AddItem ListBox.List(Listtabu(LstBxNo), 0) = Worksheets("sheet1").Cells(i, 1).Value ListBox.List(Listtabu(LstBxNo), 1) = Worksheets("sheet1").Cells(i, 2).Value Listtabu(LstBxNo) = Listtabu(LstBxNo) + 1 Next End With End Sub
- ベストアンサー
- Visual Basic
- ブックの中の1枚だけ選んで印刷したい
win7とExcel2007でマクロ作成中の初心者です。 以下、ファイルの中の複数シートを印刷できました。 Private Sub 請求書印刷_Click() Application.ScreenUpdating = False Unload Me 請求書の印刷100 '請求書印刷 Worksheets(1).Select ActiveWindow.DisplayHorizontalScrollBar = False End Sub Sub 請求書の印刷100() ' Dim i As Integer For i = 1 To Worksheets.Count - 8 With Worksheets(i) If .Range("F11").Value <> 0 Then .PageSetup.PrintArea = "$B$1:$U$44" .PrintOut End If End With Next i Worksheets(1).Activate End Sub ------------------------------------ 今度は、同一のファイルから、指定の単一のシートを印刷したいので 以下のコードを実行すると、 Private Sub 単数印刷_Click()' Application.ScreenUpdating = False Unload Me Unload G印刷 Dim i As Integer With 名簿リスト2 For i = 0 To .ListCount - 1 If .Selected(i) Then 請求書の印刷範囲200 ' Worksheets(.list(.ListIndex)).PrintPreview Worksheets(Split(.list(.ListIndex - 0), " ")(1)).PrintPreview ' End If Next i End With ActiveWindow.DisplayHorizontalScrollBar = False GH印刷.Show End Sub Sub 請求書の印刷範囲200() ' ActiveSheet.Unprotect Dim i As Integer For i = 1 To Worksheets.Count - 8 With Worksheets(i) .PageSetup.PrintArea = False '印刷範囲のクリア If .Range("F11").Value <> 0 Then .PageSetup.PrintArea = "$B$1:$T$44" End If End With Next i Worksheets(1).Activate End Sub 以下の行が黄色くなりマクロがエラーとなり停止します。 エラーは 実行時エラー9 インデックスが有効範囲にありません となります。 Worksheets(Split(.list(.ListIndex - 0), " ")(1)).PrintPreview ' これと同様のファイルで試すと何なく1枚だけ印刷できました。 このエラーの原因はなんでしょうか?解決方法を教えてください。
- 締切済み
- Visual Basic
- マクロで封筒を自動印刷
マクロで封筒を自動印刷出来る様にファイルを作りました。 先日、そのマクロで封筒を印刷する前に 別のファイルの物を印刷しようと思い、そのファイルの印刷設定を変えて 印刷をしました。 その後、マクロで作ったファイルで封筒を印刷したところ 印刷設定がおかしくなってしまいました。 とりあえず、設定を直し何度かマクロで印刷を試みましたが いくら直して上書きしても印刷設定が直らず・・・・。 一度、PCを再起動して再び試みると印刷がきちんとされました。 この現象はマクロを使っているからなのでしょうか?? それともマクロの使い方が悪くて起きる症状なのでしょうか? 対策方法があれば教えて頂けるとうれしいです。 使っているマクロは次のとおりです。 Sub Futo_Copy() '////////////////////////////// '印刷を行う '////////////////////////////// Dim i As Integer Dim S_1 As String '1行目 Dim S_2 As String '2行目 Dim S_3 As String '3行目 Dim S_4 As String '4行目 Dim S_5 As String '5行目 Dim S_6 As String '6行目 Dim S_7 As String '7行目 Dim S_8 As String '8行目 Dim S_9 As String '9行目 Dim S_10 As String '10行目 Application.ScreenUpdating = False '描画をしない 'sheet_name = ActiveSheet.Name 'アクティブシート名を取得 'シートの中で使用されている最大の列を求める。 'row_count = Worksheets("印刷対象").Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row 'シートの中で使用されている最大の行を求める。 'col_count = Worksheets("印刷対象").Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column row_count = Worksheets("印刷対象").Range("A65536").End(xlUp).Row For i = 3 To row_count '印刷対象の3行目からループ Worksheets("出力").Select 'データ取得 S_1 = Worksheets("印刷対象").Cells(i, 1) S_2 = Worksheets("印刷対象").Cells(i, 2) S_3 = Worksheets("印刷対象").Cells(i, 3) S_4 = Worksheets("印刷対象").Cells(i, 4) S_5 = Worksheets("印刷対象").Cells(i, 5) S_6 = Worksheets("印刷対象").Cells(i, 6) S_7 = Worksheets("印刷対象").Cells(i, 7) S_8 = Worksheets("印刷対象").Cells(i, 8) S_9 = Worksheets("印刷対象").Cells(i, 9) S_10 = Worksheets("印刷対象").Cells(i, 10) Worksheets("出力").Cells(1, 1) = S_1 Worksheets("出力").Cells(2, 1) = S_2 Worksheets("出力").Cells(3, 1) = S_3 Worksheets("出力").Cells(4, 1) = S_4 'Worksheets("出力").PrintPreview 'プレビュー Worksheets("出力").PrintOut 'プリントアウト Next i 'Worksheets("出力").Cells.Clear 'シートのクリア Application.ScreenUpdating = True '描画開始 Worksheets("印刷対象").Activate End Sub 出来ればこのマクロの形をあまり変えずに 症状が直せるといいのですが・・・。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- 複数のシートの1ページ目と2ページ目を連続印刷したい
Vista Excel2007でマクロ作成中の初心者です。 複数のシートが12個あります。(増減あり) それぞれのシートには、必ず2ページの改ページが設定してあります。 この複数シートの1ページ目だけを連続印刷したいです。 また、2ページ目だけを連続印刷したいです。以下のようにしたのですが うまく印刷できません。よろしくお願いします。 Sub シートの1ページ目の印刷() Dim i As Integer For i = 1 To 12 With Worksheets(i) .Range("A1:Q44").PrintOut End With Next i End If End Sub ------------------------------------- Sub シートの2ページ目の印刷() Dim i As Integer For i = 1 To 12 With Worksheets(i) .Range("Q46:Q89").PrintOut End With Next i End If End Sub
- ベストアンサー
- Visual Basic
- エクセルのデータを定型用紙に印刷
エクセルのデータシートの各行(1件づつ)を 一枚づつ定型の見積り書に印刷しようと思います。 sheet1が定型の見積書 sheet2がデータシートです。 sheet1のセル(12,3)にsheet2のセル(2,4),(3,4),(4,4) を印刷するには Sub 見積書印刷() Dim i As Long With Worksheets("sheet1") For i = 2 To 4 .Cells(12, 3).Value = Worksheets("sheet2").Cells(i, 4) .PrintOut Next i End With End Sub で、 できました。 データがsheet2でなく他のBOOKのsheetの場合 どのような式になるか 教えていただけませんか、お願いします。
- 締切済み
- その他MS Office製品
- 別シートに罫線がひけない
表題どおりなのですが、別シートに罫線がかけません。 例えばSheet1にあるボタンをクリックするとSheet2に罫線をかく。 (コードは下記参照)としたときにエラーが発生します。 「1004 Rangeメソッドは失敗しました。」 そのため「ActiveSheet.」をはずしてみると”Sheet1”に描画されてしまいます。 なにか宣言が必要なのでしょうか? Private Sub CommandButton1_Click() Worksheets("sheet2").Activate '.Selectでも同じ For i = 4 To Range("G30").Column ActiveSheet.Range(Cells(4, i), Cells(30, i)).Borders(xlLeft).Weight = xlThin ActiveSheet.Range(Cells(4, i), Cells(30,i)).Borders(xlLeft).LineStyle = xlContinuous Next End Sub
- ベストアンサー
- Visual Basic
- シートのセルの数値がゼロ0のときは、印刷しない方法は
Windows7 Excel2007でマクロ作成の初心者です。 シート数が20枚のブックがあります。セルH3には数値が入っています。 このセルが空欄もしくは数値0のときは、そのシートの印刷をやめたいです。 現在、印刷は以下のコードで実行しています。印刷を省略するにはどうしたらよろしいでしょうか。 Sub シートの印刷() Application.ScreenUpdating = False Dim i As Integer For i = 1 To Worksheets.Count - 9 Worksheets(i).Activate ActiveSheet.PageSetup.PrintArea = "$B$46:$U$89" ActiveWindow.SelectedSheets.PrintOut Next i Worksheets(1).Activate Application.ScreenUpdating = True End Sub
- ベストアンサー
- Visual Basic
- リストボックスからシートを選びアクティブにしたい
Excel2007でマクロ作成の初心者です。 リストボックスで選択した、リスト項目のワークシートを表示したいのですが、 「インデックスが有効範囲にありません」というエラーがでます。 どうしたらよろしいでしょうか? よろしくお願いします。 ’-------------------------------- Private Sub 顧客リスト_Click() With 顧客リスト Worksheets(.list(.ListIndex - 0)).Activate’----ここでエラー発生します End With End Sub ----------------------------- Private Sub UserForm_Initialize() Workbooks("請求.xls").Activate Dim i As Integer Const EXCEPT_NAME = "経理●一覧●基本●" For i = 1 To Worksheets.Count If InStr(EXCEPT_NAME, Worksheets(i).Name & "●") = 0 Then 顧客リスト.AddItem i & " " & Worksheets(i).Name End If Next i End Sub ’---------------------------
- ベストアンサー
- Visual Basic
- エクセルで差込印刷をするマクロについて
エクセルでSheet1のAに名前Bに学年が入っています。 Sheet2のY1にSheet1のAを、Y2にSheet1のBを差込印刷したいのです。 前の質問を見て名前だけの印刷は出来ましたが学年が上手くいきません。ぜひぜひお願いいたします。 学年の差込印刷が上手くいったときのマクロを記述します Sub Pri_Name() Range("A1").Activate Do While ActiveCell.Text <> "" Worksheets(2).Range("Y1").Value =ActiveCell.Text Worksheets(2).Range("A1:Z38").PrintOut ActiveCell.Offset(1, 0).Activate Loop End Sub
- 締切済み
- オフィス系ソフト
お礼
>ここは理解できるまで何度でも質問するところです。 >その代わり途中で投げ出さないようにしませう。(^^;;; ありがとうございます。自分で納得できないとどうしても次へ進めないもので、何度も質問させていただきました。 taocatさんには、前回から引き続き、何度も教えていただき、助かりました。 できました! >それから、最も早く解決する方法は、Sheet1とsheet2の レイアウトをそのまま提示することだと思います。 はい、わかりました。次の質問をさせていただく時の参考にさせていただきます。