• ベストアンサー

エクセルのマクロ

教えてください。   A     B   C 1 部品番号  ○   済印 2 111111   ○   済 3 222222   ○   済 4 333333   ○ という表があるとします。 B列にマクロのボタンを作っておき、 A列に部品番号を入力したら、マクロのボタンを押して、 C列に済、という字を表示したいのです。 1部品入力するごとに、その表示をさせたいです。 2行目、3行目・・・と一つずつマクロを登録して いく方法は、(マクロについては詳しくないので、マクロの記録、マクロの停止、という方法しかわかりません)入力するデータが100件以上あるため、それもどうかな・・と悩んでいます。超初心者なのですが、何とか完成したいと思っています。 よろしくお願い致します。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Cells(Target.Row, "C") = "済" '(sheet1への処理) Worksheets("sheet1").Range("a1:h30").PrintOut End If End Sub で出来るでしょう。 しかし上記で「処理」と書いた部分のプログラムの作成は >超初心者なのですが、であればもう少し勉強してから になると思います。 私も何ヶ月か前に同類の質問に解答しました。 http://okweb.jp/kotaeru.php3?q=1135058 こう言う場合印刷は入力機会と分ける、入力完了後印刷するのが適当ではないでしょうか。

natu-natu555
質問者

お礼

どうもありがとうございます。 拝見させていただきます。 印刷用シートで、 部品コードから、 数量、単価、売上金額を VLOOKUPでデータを抽出してきているため、 1件入力して、済印をつけ、印刷をする、 という流れにしたいようです。 月曜に職場で検証、勉強させていただきたいと思います。 どうもありがとうございました。

その他の回答 (4)

  • nak_goo
  • ベストアンサー率35% (110/312)
回答No.4

No.1のご返答にお答えします。 ただ単に部品番号を入力し、それに関する領収書を印刷したかどうかをチェックするために"済"の表示をしたい というのであれば、No.1の式で十分だと思います。 申し訳ありませんが、マクロについては明るくないので、No.2またはNo.3の方のお答えをご覧下さい。

natu-natu555
質問者

お礼

2度もありがとうございます。 印刷シートは、 部品コードより、 数量、単価、金額を抽出しているため、 1件入力して印刷・・・という方法をとっているので、 そのへんが変わってくるかな・・・とか 思っています。 月曜日に頑張って検証してみます。 どうもありがとうございました。

  • shkwta
  • ベストアンサー率52% (966/1825)
回答No.3

一つの方法として、ボタンを作らずに、たとえばセルB2をクリックすればセルC2に「済」と表示されるようにすることが考えられます。セルがボタンのような働きをするわけです。この場合、マクロは標準モジュールではなくて、シート(Sheet1など)のほうに作ります。 '---------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal target As Range)   If target.Column = 2 Then     target.Offset(0, 1) = "済"     target.Offset(1, -1).Select   End If End Sub '----------------------------------------------------------- プログラムで、SubにWorksheet_SelectionChangeという名前を付けると、クリック(セルの選択を変更)したときに自動的に起動されるようになります。targetは、クリックしたセルです。Offset(0, 1) はその右側のセル、Offset(1, -1)は左下のセルを意味します。

natu-natu555
質問者

お礼

早々にありがとうございます。 肝心なところが抜けていました。 NO1さんのレスで補足をさせていただきました。 早速検証をさせてもらいたいのですが、今、自宅ですので、月曜に職場で検証させてもらおうと思います。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

ご質問を読むかぎりではボタンを押す必要も無いように思います。 下記はA2以降でA列に何か入れると同じ行のC列に「済」と入り、A列を消すとC列も消えます。 試すなら取りあえず新規ブックで。 1.シート名のタブを右クリックして「コードの表示」 2.出てきたVBE画面にコピペ Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range For Each r In Target  If r.Column = 1 And r.Row <> 1 Then   If r.Value <> "" Then    r.Offset(0, 2).Value = "済"   Else    r.Offset(0, 2).Value = Null   End If  End If Next r End Sub

natu-natu555
質問者

お礼

ありがとうございます。 印刷シートで、 部品番号から、VLOOKUPで 単価、数量、売上金額などを 抽出しているので、1件入力して 済印つけ、印刷・・・・という作業を繰り返してしまっています。 教えていただいたこと、月曜日に検証、勉強させてもらおうと思います。 どうもありがとうございました。

  • nak_goo
  • ベストアンサー率35% (110/312)
回答No.1

もし、「A列に何らかの文字(部品番号)が入っていれば、C列に『済』と表示する」だけでいいのでしたら、マクロは必要ありません。C2のセルに =IF($A2="","","済") という式を入力し、それを必要なだけ下にコピーしてください。これは「A2が空白なら何も表示しないが、何か文字が入っていれば『済』と表示しなさい」という命令です。 こうしておけば、100件でも200件でも大丈夫です。 他に意図しておられることがあるのでしたら、何をするためにこれらの入力を行いたいのか、もう少し具体的にご説明頂ければ、お手伝いできると思います。

natu-natu555
質問者

補足

早々の回答、ありがとうございます。 今、家で書き込みをしておりまして、データの現物を持って帰ることができないものですから、大事なことを忘れていました。 部品番号を入力して、別シートに、用意している印刷用シートで領収書の発行をします。 一番目のデータを入力して、済印をつけて、領収書を印刷、 二番目のデータを入力して、済印をつけて、領収書を印刷・・・・と続けたいのです。 肝心なことを書いていなくてお手数おかけしました。 再度、よろしくお願い致します。