シート1に下のようなデータベースがあります。
 受付番号 氏名 〒 住所
   1
   2
   3
データを1から順に入力して、入力内容が日によって違いがあるのですが、入力した分だけ印刷できるマクロがわかりません。
前日、1から15まで入力して印刷、今日は16から50まで入力して、その分(16~50まで)を印刷(前日印刷した分は印刷しない)、次の日は50件入力(印刷は51~100まで)となるようなマクロです。
どなたか、ご教授くださいませ。 

このQ&Aに関連する最新のQ&A

A 回答 (4件)

> 印刷できて”0件印刷しました。

”になってしまいます。

提示したコードでは、そんなことは、絶対あり得ません。

「指定事項」以外のコードを<<変更>>したとしか考えられませんよ。


指定項目を1個追加しましたので、これでテストしてみてください。

今度のは、指定事項だけで設定出来ますので、他のコードは、変更しないでください。


Sub 最終処理分印刷()
'----- 印刷範囲 列指定 ---------
Const Sh = "Sheet1" '  <----- シート名指定
Const Left_Col = "A" '  <------ 印刷範囲の左端列
Const Right_Col = "P" '  <----- 印刷範囲の右端列
Const Target_Col = "O" ' <----- 印刷データ判定列(日付形式)
Const Prev_Mode = 0 '  <----- 0 = 直接印刷 /  1 = プレビュー
'------------------------------
Dim TopRw As Long
Dim EndRw As Long
Dim Target_Date As Date
Dim N As Long
With Worksheets(Sh)
  EndRw = .Range(Target_Col & "65536").End(xlUp).Row
  If Not IsDate(.Range(Target_Col & EndRw).Value) Then
    MsgBox "印刷するデータがありません。 終了します。"
    Exit Sub
  Else
    Target_Date = .Range(Target_Col & EndRw).Value
  End If
  TopRw = EndRw
  Do While .Range(Target_Col & TopRw).Value = _
    .Range(Target_Col & TopRw).Offset(-1).Value
    TopRw = TopRw - 1
    If TopRw = 1 Then Exit Do
  Loop
  N = EndRw - TopRw + 1
  .PageSetup.PrintArea = Range(Left_Col & TopRw & _
    ":" & Right_Col & EndRw).Address
    If Err.Number > 0 Then
    MsgBox "プリンターの準備が、出来ていません。"
    Exit Sub
  End If
  If Prev_Mode = 1 Then
    .PrintOut preview:=True
  Else
    .PrintOut preview:=False
    MsgBox Target_Date & " 入力分を " & N & _
      " 件 印刷しました。", , "印刷完了"
  End If
  .PageSetup.PrintArea = False
End With
End Sub
    • good
    • 0
この回答へのお礼

何度も何度もすみませんでした。出来ました。
指定事項のみ変更でよかったのですね。
コードの中の"N"も変更したからのようです。VBA素人の質問にお付き合い頂きありがとうございました。

お礼日時:2005/04/16 21:45

> メッセージボックスに件数に関係なく”0件印刷しました。

”と表示されます。

「印刷されたのに」0件 ということですか?
それとも、印刷されるべきデータがあるのに「印刷されずに」ということですか。

ちょっと考えれませんが、もう一度、コードを貼り付け直してやってみてもらえませんか。
こちらで、色々検証していますが、そのような現象は、出ませんし、印刷しないのに
メッセージボックスが表示になるコードには、なっていないのですが・・・

日付データは、N列 ですよね。
N列の右にも印刷データがあるのですか?
現在は、「右端列を指定(日付データ)」で指定した列が印刷最終列にしています。

これとは、関係ありませんが、プリンターの準備が出来ていないとき、メッセージを出す
ようにしましたので、下記のコードを使ってください。


Sub 最終処理日分印刷()
'----- 印刷範囲 列指定 --------
Const Sh = "Sheet1" ' <------- シート名指定
Const Left_Col = "A" ' <------ 左端列を指定
Const Right_Col = "N" ' <------ 右端列を指定(日付データ)
Const Prev_Mode = 0 ' <--------- 0 = 直接印刷 /  1 = プレビューモード
'------------------------------
Dim TopRw As Long
Dim EndRw As Long
Dim Target_Date As Date
Dim N As Long
On Error Resume Next
With Worksheets(Sh)
  EndRw = .Range("N65536").End(xlUp).Row
  If Not IsDate(.Range("N" & EndRw).Value) Then
    MsgBox "印刷するデータがありません。 終了します。"
    Exit Sub
  Else
    Target_Date = .Range("N" & EndRw).Value
  End If
  TopRw = EndRw
  Do While .Range("N" & TopRw).Value = .Range("N" & TopRw).Offset(-1).Value
    TopRw = TopRw - 1
    If TopRw = 1 Then Exit Do
  Loop
  N = EndRw - TopRw + 1
  .PageSetup.PrintArea = Range(Left_Col & TopRw & ":" & Right_Col & EndRw).Address
  If Err.Number > 0 Then
    MsgBox "プリンターの準備が、出来ていません。"
    Exit Sub
  End If
  If Prev_Mode = 1 Then
    .PrintOut preview:=True
  Else
    .PrintOut preview:=False
    MsgBox Target_Date & " 入力分を " & N & " 件 印刷しました。", , "印刷完了"
  End If
  .PageSetup.PrintArea = False
End With
End Sub

この回答への補足

 ja7awu さま  色々とありがとうございます。
コードを貼り付け直してみたところ印刷できました。がしかし・・・
データを2~3増やして日付データをN列からO列あるいはP列になった時にコードの”N”を”O”または”P”にただ単に変更して実行したところ、印刷できて”0件印刷しました。”になってしまいます。
お力をお貸しください。

補足日時:2005/04/16 17:03
    • good
    • 0

可也融通性を持たせて作成しましたが、これで如何でしょうか。



メニュー[ファイル]--->[ページ設定]--->[シート]タブで、「行のタイトル」欄に、
見出し行の部分を設定します。
例えば、見出し部分が、1行だけの場合は、$1:$1 と指定します。

標準モジュールに記述

Sub 最終処理日分印刷()
'----- 印刷範囲 列指定 ---------
Const Sh = "Sheet1" '     シート名指定
Const Left_Col = "A" '     左端列を指定
Const Right_Col = "N" '    右端列を指定
Const Prev_Mode = 0 '      0 = 直接印刷 /  1 = プレビューモード
'------------------------------
Dim TopRw As Long
Dim EndRw As Long
Dim Target_Date As Date
Dim N As Long
With Worksheets(Sh)
  EndRw = .Range("N65536").End(xlUp).Row
  If Not IsDate(.Range("N" & EndRw).Value) Then
    MsgBox "印刷するデータがありません。 終了します。"
    Exit Sub
  Else
    Target_Date = .Range("N" & EndRw).Value
  End If
  TopRw = EndRw
  Do While .Range("N" & TopRw).Value = .Range("N" & TopRw).Offset(-1).Value
    TopRw = TopRw - 1
    If TopRw = 1 Then Exit Do
  Loop
  N = EndRw - TopRw + 1
  .PageSetup.PrintArea = Range(Left_Col & TopRw & ":" & Right_Col & EndRw).Address
  If Prev_Mode = 1 Then
    .PrintOut preview:=True
  Else
    .PrintOut preview:=False
    MsgBox Target_Date & " 入力分を " & N & " 件 印刷しました。", , "印刷完了"
  End If
  .PageSetup.PrintArea = False
End With
End Sub

この回答への補足

ありがとうございます。
メッセージボックスに件数に関係なく”0件印刷しました。”と表示されます。
あと少しなんですけど・・・

補足日時:2005/04/15 21:15
    • good
    • 0

このデータ構成では、「今日入力した分」だと認識できるものが、何も無いから



今日入力した行を選択状態にするなどして、マクロを実行しなければなりません。

それを無くし、効率的に、印刷するためには、[受付日]の項目を設けたら如何でしょうか。

そうすれば、印刷対象日を指定して印刷することが、出来るようになります。

その辺の識別の方法が、はっきりすれば、サンプルコードを提示できるかも知れません。

この回答への補足

ja7awuさんアドバイスありがとうございます。
シート1の項目欄最後(N列)に処理日(データの入力日と考えていただければ)を入力項目があります。
サンプルコードの提示よろしくお願いいたします。

補足日時:2005/04/12 20:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q答案用紙のコピーを紛失 個別塾講師してます。 10月半ばにある中間試験のための模擬試験を作ろうと思

答案用紙のコピーを紛失

個別塾講師してます。
10月半ばにある中間試験のための模擬試験を作ろうと思い、あらかじめ生徒にコピーさせてもらっておいた1学期の期末テストの問題と生徒の答案用紙を家に持って帰りました。
模擬試験は作り終えたのですが、生徒の答案用紙のコピーを紛失しました。
紛失したのはコピーなので元は本人が持っています。
紛失したらしいと思った時点ですぐに塾長には電話で紛失の報告をしました。塾長にはまず黙って家に持ち帰ったことを叱られました。塾長が該当生徒の家の電話で謝罪してくれて助かったのですが、塾長からは電話で叱られ、今日も呼び出しを受けています。
とても反省しているのですが、これって始末書書かされますか?始末書よりも厳罰に当たるでしょうか?よろしくお願い致します。

Aベストアンサー

> これって始末書書かされますか?始末書よりも厳罰に当たるでしょうか?
あきれて物が言えないというか・・・
それで個人指導が出来ますか?
    
懲戒レベルなど塾の規程、あるいは塾長の判断でしょう。
そんな事がわかりませんか?
   
ここで「口頭の注意ですみます」と10人の回答が付いても、塾長が「始末書が必要」と思えば始末書でしょう。
あるいは「解雇」と思っているかもしれない。
   
なんでも掲示板で聞けばいいのではないです。

Qセルに〒番号を入力したら〒とハイフォンが

エクセルに0000000と郵便番号を入力したときに
〒000-0000と変換したいのです。

下記のアドレスでで
1番目ですると0000000が000-0000となります。
続けて2番目をすると〒0000000となります。
どなたか私が駄目なのか分かりませんが開設若しくはご教授願えないでしょうか。
よろしく御願いします。
http://oshiete1.goo.ne.jp/qa701058.html

Aベストアンサー

〒 をつける範囲を選択
右クリックして「セルの書式設定」を選択
表示形式でユーザ定義を選択して種類の下の部分に 以下を張り付ける
[<=999]"〒"000;[<=99999]"〒"000-00;"〒"000-0000
これで完了します。

1234567と入れたら 〒123-4567となりました。

参考URL:http://www2.odn.ne.jp/excel/waza/format.html#SEC12

Q答案用紙のコピー

中学での話しなのですが、生徒にも保護者にも事前報告もなしに採点後の答案用紙をコピーすることは違法ではないのでしょうか?

一応個人情報ですし、漏洩防止のための対策などなにも説明もありませんでした。

法律などに詳しい方おりましたらよろしくお願いします。

Aベストアンサー

いわゆる個人情報保護法と呼ばれる法律では、数量的なものをはじめ種々の条件が存在しています。従って、この法律そのものは、あなたの助けにはなりません。
他の方も書かれていますが、漏洩防止策を説明する義務は、学校にはありません。
最近、連絡先など、本来学校の業務を遂行するために必要な情報まで、上記の法律を盾にする親がいるようですが、明らかに間違った運用です。

学校には、成績を記録し、評価する義務があり、通学路での安全を確保する義務もあります。
コレの遂行を邪魔する親御さんって、実際に学校の業務やお子さんの安全が確保できなくなったときに、どうやって、他のお子さん、親御さんへの責任を取るつもりなのか、むしろ不思議に感じています。

ところで、答案の所有者、権利者は、誰にあるとご質問者は考えておられるのでしょうか? ひょっとして、ご自身かお子さんにあると考えられていますか?
最大の勘違いは、答案を返す義務があるかのように書かれている点です。

個人情報は別の方が書かれていますが、公教育の現場においては、著作権すら一定の条件を満たした状態で、適用されません。著者に、複写/複製を連絡せずに、お子さんへ教材として配布したり、試験に使ったりすることができます。ましてや、教育に必要な成績や実答案を複写できないと、法的に判断する解釈が存在するとはこちらの面でもあり得ないと思われます。

個人情報の漏洩に関しては、各学校、各先生は、親御さんへではなく、教育委員会に対して責任を負っています。
答案以前に、学校の成績、各家庭の住所などは、成績をつけ、教育委員会で統括するために存在しています。ご質問の答案よりも、リスクがあるのはこちらの方かもしれません。

なお、現実的な話としては、実際に漏洩し、損害が発生した場合、はじめて民事の訴訟を起こす権利が生じます。

いわゆる個人情報保護法と呼ばれる法律では、数量的なものをはじめ種々の条件が存在しています。従って、この法律そのものは、あなたの助けにはなりません。
他の方も書かれていますが、漏洩防止策を説明する義務は、学校にはありません。
最近、連絡先など、本来学校の業務を遂行するために必要な情報まで、上記の法律を盾にする親がいるようですが、明らかに間違った運用です。

学校には、成績を記録し、評価する義務があり、通学路での安全を確保する義務もあります。
コレの遂行を邪魔する親御さんって...続きを読む

Qフォルダ内のexcelファイルを順に開いてマクロ有効ブックに別名保存して閉じるマクロを作りたい

マクロは難しい・・・

https://oshiete.goo.ne.jp/qa/2598781.html
上記URLでフォルダ内の全ファイルを開くマクロがありましたので参考にしていたのですが別名で保存の段階で詰まってしまいました。貴重な休日がああ~~
現在仕事の引き継ぎでマクロ非対応のファイルをマクロ有効にしようとしているのですが多いと1フォルダに100個、全部で400以上あるため自動でできたらなあと考えています
やりたい作業は、

1.同じフォルダにあるファイルを開く
2.別名で保存でマクロ有効ブックとして保存(名前は開いたファイルのまま)
3.閉じる
4.次のファイルを開く
5.1~4をフォルダ内のファイル全てに適用するまで繰り返す

というものです
URL先のコードに別名で保存のコードを入れればいいんじゃん!やったぜひとりでできるもん!と思い追加したいマクロを記憶しながらコードを見て作ってみたのですが同じ名前で保存されたり end sub が必要などとエラーが出て上手くいきませんでした(´;ω;`)

Aベストアンサー

失礼しました。パスの指定が不完全でした。これでどうでしょう。

Sub sample()
Dim Fs, Fl, Fn, wb
Set Fs = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files
For Each Fl In Fs
Fn = ThisWorkbook.Path & "\" & Fl.Name
If Right(Fn, 5) = ".xlsx" Then
Set wb = Workbooks.Open(Fn)
Fn = Left(Fn, Len(Fn) - 5) & ".xlsm"
Application.DisplayAlerts = False
wb.SaveAs Filename:=Fn, FileFormat:=xlOpenXMLWorkbookMacroEnabled
wb.Close
Application.DisplayAlerts = True
End If
Next
End Sub

失礼しました。パスの指定が不完全でした。これでどうでしょう。

Sub sample()
Dim Fs, Fl, Fn, wb
Set Fs = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path).Files
For Each Fl In Fs
Fn = ThisWorkbook.Path & "\" & Fl.Name
If Right(Fn, 5) = ".xlsx" Then
Set wb = Workbooks.Open(Fn)
Fn = Left(Fn, Len(Fn) - 5) & ".xlsm"
Application.DisplayAlerts = False
wb.SaveAs Filename:=Fn, FileForma...続きを読む

Q「答案用紙に答えを書く」

「答案用紙に答えを書く」はどういえばいいでしょうか。

write my answer(s) on the answer sheet

かなと思ったのですが、answer が重なってますよね。
実際に使う英語を教えていただけますか。

Aベストアンサー

I wrote my answers on the answer sheet.

全然問題ないですよ。

Q【エクセル】別シートの名簿の項目を本シートに1人ずつ落とし、数人分までを連続印刷するマクロについて。

いつもお世話になってます。

マクロの記述で質問します。

シート2に連番の名簿番号の付いた名簿を作ります。
シート1に文書の様式を作ります。
シート1の文書の様式の枠外のA1に名簿番号を入力すると
シート1の様式にシート2の同じ名簿番号の者の氏名・住所・電話番号が各欄に表示されます。
印刷ボタンを押すと様式が印刷されます。

ここまではマクロで作ったのですが、(たいしたことありませんが。)

シート1のA1に”4”、B1に”12”と入力し、印刷ボタンを押すと、
名簿番号4~12までを順次様式に反映させ、9枚連続印刷する。

というところまで作りたいのですが、どのようなマクロの記述になるのか判りません。
例としてどのような記述になるのでしょうか?

もしくは、参考になる過去の質問や参考になるようなサイトなどご存知でしたら教えてください。よろしくおねがいします。

(エクセル2003)

Aベストアンサー

簡単に行うならこんな感じでしょうか。

Sub LP()

Dim start As Long
Dim stp As Long
Dim i As Long

start = Range("A1")
stp = Range("B1")

For i = start To stp
Range("A1") = i
Call 作成した印刷マクロ
Next

End Sub

Q答案用紙試験地欄の記入の仕方

答案用紙に受験番号・氏名・試験地を記入する欄があるとおもうのですが、試験地(会議所名)のところにはどう記入すれば良いのでしょうか。
試験会場が学校の場合は○○学校と記入するのでしょうか?
それとも試験の申し込みをした会議所名、○○商工会議所と記入するのでしょうか?

Aベストアンサー

学校名でOKです。

QA2からA16までの足し算マクロ

エクセルVBA初心者です。
初心者のため、うまく質問できるか分かりませんが、よろしくお願いします。

タイトルのように
A2からA16に入っている値を全て足して、その値を別シートのB2セルに書き出す、というマクロを教えてほしいんです。
別シートに書き出すマクロは分かるのですが、足し算が分からないんです。

A2+A3+・・・
とやってもいいんでしょうけど、凄く大量で1つ1つ書けないんです。
まとめて、ここからここまで全部足す!みたいなマクロはないでしょうか><;

大雑把な質問ですみません・・・
アドバイスよろしくお願いします。

Aベストアンサー

Option Explicit

'Excelに標準で存在するSUM関数じゃなくてVBAによるマクロだよね?

Sub Summation()
Dim i As Integer
Dim sum As Integer
For i = 2 To 16
sum = sum + CInt(Cells(i, 1).Value)
Next i
Cells(2, 2).Value = CStr(sum)

End Sub

Q手書きソフトについて、答案用紙のマルバツなど

質問があります。たとえば、テストの答案用紙や設計図の画像が
あったとします。私はそこに、マルバツをつけたりコメントを
入れたりします。通常であるなら、フォトショップなんかで
画像を加工するという形で書き込みを入れたりすると思います。

しかし、私はどうもフォトショップなんかで罫線を入れたり、
フォントを入れるより、画像の上に直接手書き
(パネルの上にタッチペンなんかで)で書いたほうが楽
なので、その場合、どういう機器とソフトが必要でしょうか。

画像

手書きで書き込み

画像を保存

こんな流れですが宜しくお願いします。

Aベストアンサー

テストの答案用紙や設計図の画像はパソコンなどには
取り込まれているのでしょうか。

取り込まれているのでしたら、Photoshopなどの
画像編集ソフトで読み込んで、マウスで◯やXを
手描きで書き込むという方法もあります。
Text入力だけでなく、手描きでも線は描けますので。

マウスだときれいな◯やXが描けない場合は
イラスト制作をしているほとの多くが使用している
ペンタブレットを購入するという方法もあります。
ペンタブレットもWACOM製品の最安価な機種でも
7000円弱しますが、タブレットを改めて購入するよりは
安価だと思いますので。
http://www.amazon.co.jp/wacom-Intuos-S%E3%82%B5%E3%82%A4%E3%82%BA-CTL-480-S0/dp/B00EL8HLZO/ref=sr_1_1?ie=UTF8&qid=1399887631&sr=8-1&keywords=%E3%83%9A%E3%83%B3%E3%82%BF%E3%83%96%E3%83%AC%E3%83%83%E3%83%88

下記ソフトなどもフリーの画像編集そふとですので、
Photoshopを購入しなくてもできますよ。

Webアプリですが画像編集ソフトです。
pixlr
http://pixlr.com/editor/

イラストを描かれる方がよく使っているようですが、
下記のソフトも画像編集ソフトです。
Pixia
http://www.pixia.jp/

イラスト制作ソフトですが
このソフトでも描けます。
FireAlpaca
http://firealpaca.com/

他にも「お使いのOS名 画像編集ソフト 無料」
などで検索すれば色いろあると思います。
Windows搭載のPaintでもできると思います。

テストの答案用紙や設計図の画像はパソコンなどには
取り込まれているのでしょうか。

取り込まれているのでしたら、Photoshopなどの
画像編集ソフトで読み込んで、マウスで◯やXを
手描きで書き込むという方法もあります。
Text入力だけでなく、手描きでも線は描けますので。

マウスだときれいな◯やXが描けない場合は
イラスト制作をしているほとの多くが使用している
ペンタブレットを購入するという方法もあります。
ペンタブレットもWACOM製品の最安価な機種でも
7000円弱しますが、タブレットを改めて購入す...続きを読む

QエクセルでA1からA10まで入力したあと、B1に戻って同じように入力していける方法を教えてください

タイトルのとおりです

A1から入力を初めて、A10で一つのデータ入力を終了させて、次にB1に自動的に戻り、B10まで入力して、さらにC1に戻り・・・


と、いう作業をしたいのですが、
どのようにしたらいいのでしょぅか?

Aベストアンサー

>A1の次はB1になりますよね

「ツール」→「オプション」→「編集」→「入力後にセルを移動する」の「方向」を「右」にすれば
A1の次がA2になります。
あとは#1さんの方法で・・・。


また、ちょっと面倒な方法ですが
A1~A10をドラッグ後、Ctrlキーを押しながらB1~B10をドラッグ、
続いてC1~C10をドラッグ、D1~D10・・・とすると
移動方向を右に設定しなくてもA1~A10→B1~B10→・・・と
移動させることが出来ます。


人気Q&Aランキング

おすすめ情報