2019年09月16日

試作1 セルに1が入力されていたら隣のセルにOKを表示する / Excel / VBA

 さてと、ここから本題です。前回の「一覧表から帳票を自動で印刷させる」の中で処理の流れを言葉で書き出してみましたが、その中でまず最初に取り掛かるのは 4.の「所定の列に印刷指示が入力されていたら受注票を作成する」です。なぜそこからかと言うと。。。慣れてくればおいおい分かって来ますので(?)まずそこから片付けていきます。
 ただ、いきなり受注票は作らないと言うか、受注票はマクロじゃなくてExcelの関数を使おうと思っているので、受注票は作らない別の試作をまず作ってみようと思います。

試作の目的は条件を満たしているかどうかによって処理を分岐させることです(条件分岐)。Excleの関数で考えるとIF関数です。
「所定のセルに印刷指示が入力されていたら」が条件分岐になります。

試作ではセルA2に“1”が入力されていたらセル“B2”に“OK”と表示し“1”の入力がなかったらセルB2に“NG”表示させてみます。
20190916-01.jpg図1

条件分岐のVBAはIFを使用します。

If 〜:条件を指定します
Then〜:条件を満たしたときの処理を指定します
Else〜:条件を満たさなかった時の処理を指定します(省略すると条件を満たさない時は何も行いません)
End If:条件分岐の終了

セルの値は
Cells(行番号,列番号)で指定します。
かっこの中は行番号と列番号の数字になります。例えば、セルA1だったら(1,1)、A2だったら(2,1)、A2だったら(2,1)となります。

セルA1が“1”は
Cells(1,1)=1 と記入します。

同様にセルB2に“OK”を表示させるのは
Cells(2,2)="OK" と記入します

標準モジュールを追加して次の様にコーディングします。

Sub Macro1()


If Cells(2, 1) = 1 Then
     'セルA2が1の時
Cells(2, 2) = "OK"         'セルB2に“OK”を表示
Else              'そうでなかったら
Cells(2, 2) = "NG"        '“NG”を表示

End If            '条件分岐の終了 


End Sub

こんな感じです
20190916-02.JPG図2

標準モージュールの上で「F5」キーを押してマクロを実行させます。
セルA2に“1”が入力してあると
20190916-03.JPG図3

試しに“2”と入力してみると
20190916-04.JPG図4

と表示されました。
以上で、条件分岐の試作ができました。
サンプルExcelファイル)試作1 セルに1が入力されていたら隣のセルにOKを表示する.xlsm
これで、セルに印刷指示がある時に受注票を印刷させる条件分岐はなんとかなりそうです。
なんか複雑そうに見えるマクロでも単純な形に変えてみてそれらの組み合わせになるように考えていけば比較的楽に出来る様になりますよ。


 ところで、Windows10の2019年5月のアップデート以来、Chromeが遅いと言うか、Chromeを開いてこうしてブログを書いているとパソコンがフリーズ寸前みたく処理が全然進まなくなってしまうんだけど。。。
 XPからVistaかた10と、OSのサポートが切れるとそれに合わせてPCを最新OSの物に買い替えているのだけど、新しいPCになっても画期的に早くなったと感じないのは俺だけ?10万位のPCだから?20万位の高いPCなら早い?Chromeも早くなる?
 っと、ネットで調べてたらマイクロソフトのサイトに「Windows 10 で PC のパフォーマンスを向上させるためのヒント」と言うのがあったので、皆さんも参考にしてみては?
因みに、そこに出ていた様にスタートアップをほぼ全部停止させたら、早くなったように思います!


前のページ:一覧表から帳票を自動で印刷させる
次のページ:VLOOKUPで一覧表から帳票を作成してみた

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!



鯉口と言って袖口がやや窄まっている和装の下着なのだが今は庭師や料理人の作業着やお祭り衣装として使われてます。
日本人には日本古来の作業着がよく似合う!



posted by haku1569 at 16:21| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年09月14日

実例1 一覧表から帳票を自動で印刷させる / Excel / VBA

最初の課題に挙げたのは「一覧表から帳票を自動で印刷させる」です。
いきなり難しそうですが、“「こんにちは」と画面に表示させる” とかよりも現実的な方が興味深々でしょ?
って、どういう内容かと言うと。。。

ある食品問屋の受注一覧表(受注マスタ)がありました。
Excelで入力したこんな表を作っています。
テーブルに設定してあって、ピボットテーブル等で様々な集計ができる機能的なテーブルになっています。
20190908-03.JPG

で、この問屋さんでは格拠点の営業からFAXで届く受注情報をこの受注マスタに入力すると同時に食材毎の仕入れ担当者に手書きで「受注票」を作成発行し、仕入れの指示書としています。
その作業を合理化するために受注マスタから受注票の作成から印刷までをマクロをで自動化させてみたいと思います。
こんなイメージです。
20190908-02.jpg

で、この処理の流れを言葉で書きだしてみます。
  1. 受注マスタの受注票を発行したい行に印刷の指示を入力します。一度に何件でも入力できるようにします
  2. マクロを実行させます
  3. 受注マスタの一番最初の行に行きます
  4. 所定の列に印刷指示が入力されてたら受注票を作成します
  5. 作った受注票を印刷します
  6. 次の行を見に行きます
  7. 4〜6を繰り返し最後の行まで行ったら終了します。


こんな流れでしょうか。
では、いよいよ次回からはこの処理を実行するために必要なマクロをひとつずつ作っていきましょう。



前のページ:マクロで何をさせたいか?目的は何!?どうしたいの?
次のページ:試作1 セルに1が入力されていたら隣のセルにOKを表示する

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!
マクロで何をさせたいか?目的は何!?どうしたいの?


災害は忘れた頃にやってきます。
備えあれば憂い無し!
防災用品はいざと言う時(慌てている時や、真っ暗闇の中)でも直ぐに使えるように1か月に一度は使う練習をしておきましょう!

posted by haku1569 at 19:05| Excel VBA | このブログの読者になる | 更新情報をチェックする

2019年09月08日

マクロで何をさせたいか?目的は何!?どうしたいの?/ Excel / VBA

VBAを使えるようになるために、色々なマクロを実行させるオブジェクトやそれらのプロパティーの使いかたを勉強したり、プログラムの書き方(コーディング)を勉強したりするのも必要なことなのですが、まぁ、そう言う勉強方法は学校の授業みたいで、何のためにやっているのか?目的意識が何だか分からなくなってきます。
基礎的な事からコツコツ学んでいけば何れは自由自在にVBAが使えてどんなマクロも作っていけるようになる?
って信じる人が救われるかもです。が、英会話と一緒で学校で単語や文法を勉強したからと言ってしゃべれるようになるかと言うとハッキリ言って出来ないですよね。フツーは。
それより、海外に行ってどうしても話さなくてはならない状態になって、必要に迫られると文法が合ってるかどうかなんて関係なく話せるようになる。話せるようになると言うか、生活に困らなくなる。
そう、目的は「英語が話せるようになる」ではなく「海外で不自由なく生活が出来る様な会話ができる」なのです。
それが正しい英語と言えるかどうかは二の次です。
20190908-04.jpg

だから、VBAもマクロを作って何がしたいか、今何に困っているか、マクロを作るとどれだけ楽に短時間に仕事が出来る様になるか、目的を明確にして、その課題を解決していく。そんな経験を積み重ねることによって、いつの間にかVBAをそこそこ使えるようになっていたと言うのが、マクロ上達の近道なのだ思うわけであります。

と言うわけで、次回からは具体的に課題を想定してそれをマクロで解決していきたいと思います。
まず最初の課題は、一覧表から帳票を自動で印刷させてみようと思います。



前のページ:
次のページ:

関連ページ
Excel VBA メニュー
VBAを使えるようにしてみました!



100年以上の歴史をもつスウェーデンのマルチフューエルストーブ。
こんなん持って外でコーヒーでも入れたらサイコーだぜっ!

posted by haku1569 at 18:44| Excel VBA | このブログの読者になる | 更新情報をチェックする

この広告は180日以上新しい記事の投稿がないブログに表示されております。