Softex Celware

ExcelVBA専門技術ブログ

マニュアルメーカーbyE バージョンアップ情報

概要

マニュアルメーカーbyEのバージョンアップ情報をまとめておきます。

softex-celwear.hatenablog.com

 

バージョンアップ履歴

 

Ver1.16 2024.1.30更新

  • 起動時のショートカットキー設定のYes/Noのデフォルトを設定可能に

 

Ver1.15 2024.1.16更新

  • 別名で保存時にショートカットキーの設定を元ファイルにおいての解除と再設定機能追加
  • 赤矢印はポリラインも対象とする



Ver1.14 2024.1.18更新

  • 終了時にショートカット設定を自動解除する

 

Ver1.13 2024.1.10更新

  • 目次選択の「▲」で「○/[目次数]」がステータスバーに表示が出来ていなかったので修正

 

Ver1.12 2024.1.09更新

  • 赤枠、赤矢印、黒枠の線太さを設定可能に
  • 図形選択(アクセスキー[Alt]+[N]+[SN])を自動的に行う機能追加
  • 目次選択の「○/[目次数]」はステータスバーにも表示
  • 1,2行目はグループ化して表示/非表示切替可能に

 

Ver1.11 2023.9.19更新

  • 各機能にショートカットキーを割り当て可能に

 

Ver1.10 2023.9.15更新



Ver1.09 2023.9.14更新

  • 目次の選択時にその目次範囲の図形が入るセル範囲を自動選択する機能追加
  • 「図形」シートにおいてセル範囲選択とそのセルに入っている図形の自動コピー機能追加
  • 「図形」シートは表示時と同時に前回コピーした図形をコピー

 

Ver1.08 2023.9.5更新

  • 目次の▼▲ボタンの機能修正

 

Ver1.07 2023.9.4更新

  • 目次の図形の右上セルに「●」を付ける

 

Ver1.06 2023.8.30更新

  • 「図」シートを複製したときに目次の番号の表示が複製先シートでできない問題を修正
  • 保存時に「[名前] MME Ver1.06.xlsm」となるように変更

 

Ver1.05 2023.8.19更新

  • ボタンの配置変更
  • 使い方の表示ボタン追加

 

Ver1.04 2023.8.16更新

  • 公開版をリリース
  • 図形のテキストに数字「1,2,3」、丸数字「①,②,③」を入れる機能追加

VBA開発事例紹介 No.3 (介護現場のシフト表自動作成)

今回は実際に過去に対応したExcelVBAでの開発事例を紹介

あなたの職場でもお役立ちできるヒントとなれば幸いです。

 

紹介動画

今回の事例を動画でまとめております。動画はわちょんさん(わちょんのゆっくりIT - YouTube)に作っていただきました!

www.youtube.com

概要

内容はタイトルの通り「介護現場のシフト表自動作成」ツールの開発

依頼の背景として

 「とにかく作成が大変!!

とのこと。

 

具体的に次のような感じ。

  • スタッフの希望を全部満足できない(スタッフは30名)
  • シフトの種類が多い(17種類)
  • 条件が複雑(のちほど詳細を説明)

 

作成が遅れるとスタッフ個々人の来月の予定が立てられない。

 

ごめんね。来月の休みがまだ分からないの...

 

これでは家族のレジャー、彼氏彼女とのデートの予定も立てられません。

 

これらの悩みを一挙に解決したのが今回の開発事例になります。

 

詳細条件

まずシフト表作成における詳細の条件を並べます。これらを満足するようにシフト表を自動生成します。

  • 職種は「介護職」と「リハビリ職」の2種類。「リハビリ職」は「作業療法士理学療法士」に分かれる
  • 介護職、リハビリ職で1日あたりの必要なシフト配置人数が異なる
  • 最大の連続で出勤できる日数は5日間(労働基準法
  • 1人当たりの休日日数は指定が可能
  • 1人当たりの夜勤の日数は介護職は5日、リハビリ職は2日
  • 各スタッフの希望は「希望休」か「有休」のみ受け付ける
  • シフトの種類は「休」「明」「夜A」「夜B」「遅A」「遅B」「遅C」「早A」「早B」「中A」「介A」「介B」「出」「有介」「有リ」で「希望休」「有休」も含めて17種類
  • 各シフトの種類で1日に配置する人数が決まっている(希望休、有休、明、出は除く)図1
  • 夜勤である「夜A」「夜B」は不可のスタッフがいる
  • 早番「早A」「早B」は連続しない
  • 遅番「遅A」「遅B」「遅C」は連続しない
  • 夜勤「夜A」「夜B」は連続しない
  • 遅番「遅A」「遅B」「遅C」の次の日には早番「早A」「早B」は割り振らない
  • 夜勤「夜A」「夜B」の次の日には早番「早A」「早B」は割り振らない
  • 「希望休」「有休」「休」の次の日には「明」は割り振らない
  • 「介A」「介B」は男女ペアにすること
  • 最後に余ったところは「出」を配置する

 

図1:各シフト種類の配置人数

 

 

完成品仕様

シート全体の構成は図2の通り。そのままだと見えないので拡大して表示を推奨。

図2:シート全体構成

 

次に各機能別に説明します。

設定の入力

シフト表作成における条件人数などの各種設定を入力する部分です。

  • どの年月のシフト表を作成するか
  • 各シフトの1日当たりの配置人数。介護職、リハビリ職での有無「○×はダブルクリックで切り替えが可能」
  • 最大連勤日数
  • 1人当たりの休日日数
  • 夜勤日数。介護職、リハビリ職で別
  • 各スタッフの情報(職種、性別、夜勤有無、社員番号、社員氏名)

図3:設定の入力

 

自動作成機能

本ツールのメイン機能の自動生成機能について

  • シフト表初期化」:出力済みのシフト表を初期化します。そこから希望などをまた入力します。
  • シフト表作成(通常)」:通常作成モードで毎回同じ結果でシフト表が作成されます。
  • シフト表作成(ランダム)」:ランダム作成モードで毎回異なる結果でシフト表が作成されます。

 

 

図4:自動作成機能

 

ちなみに、出力はで可能です。

www.youtube.com

希望入力

「希望休」「有休」を入力する部分のUIです。

対象のスタッフ、日付のセルを選択した状態で「希休」「有休」ボタンを押すと、そこに「希望休」「有休」が入力可能です。キーボード操作が不要で、効率かつ正確な入力が可能になります。

入力した希望は保存および読込も可能です。

図5:希望入力

 

条件チェック

出力されたシフト表が条件通りかを確認する部分です。

各シフトの一日当たりの人数を計算します。

各スタッフにおけるシフトの担当回数を計算します。

条件と満足していないところは自動的に赤く着色してエラーと分かるようになっています。

図6:条件チェック

 

修正機能

出力されたシフト表を後から修正する機能です。

特定のセルをダブルクリックすると、選択入力用のユーザーフォームが起動します。

キーボード操作不要なので効率かつ正確に入力が可能になっています。

図7:修正機能

 

技術解説

今回のシフト表作成における技術は超門外不出ですので非公開です。

 

これ以外の対応事例

今回は介護現場でのシフト表でしたが、上記の技術を利用した実際の対応した案件は次のようなものがあります。

ご依頼する際はぜひ参考にしてください。

  • パチンコホールのホールスタッフのシフト表(人数100人、シフト20種類、1ヶ月)
  • 病院の当直表(人数40人、3か月間で均等に割り振る)
  • クリニックのシフト表(常勤、非常勤、出勤時間帯バラバラ、曜日別の出勤パターン設定)
  • 保育園のシフト表(担当クラス割り当て、イベントなど考慮)
  • 訪問介護のシフト表(移動時間帯などを細かく設定、利用者とスタッフの相性も考慮)

 

PR

ExcelVBAでのツール開発を承っております。(対応実績400件突破 2023年9月)

お気軽にご相談ください。

VBA開発事例紹介 No.2 (バーコードの自動生成 JANコード13桁)

今回は実際に過去に対応したExcelVBAでの開発事例を紹介

あなたの職場でもお役立ちできるヒントとなれば幸いです。

 

概要

内容はタイトルの通り「バーコードの自動生成」です。

バーコードにはさまざまな種類があるのですが、今回は最も主流のJANコード13桁の自動生成。

下記画像のようにバーコードの番号13桁をもとに右側にバーコードを生成してセル内に収まるように貼り付けます。

 

技術解説

バーコード生成の手順は次の通りです。

  1. シートに入力してある番号を一覧で取得する
  2. それぞれの番号(13桁)をもとにバーコードを別シートに生成する。別シートがない場合は新たにシートを追加する。生成にはセルの塗潰しを利用する。
  3. 別シートに生成したバーコードを、生成範囲のセルをコピーして生成先のセルに画像として貼り付ける。作成元の別シートは消去する。
  4. 貼り付けたバーコード(画像)のサイズをセルに対して余白ができるように調整する
  5. 2~4をそれぞれのバーコード番号でループして処理する

少しだけ解説をすると、2の「別シートにバーコード生成」は次画像のような感じで別シートにセルの塗潰しを利用して生成します。

コード

実際に実装したコードを添付します。

流用する際は必要な部分だけかいつまんで利用してください。

S_バーコード出力テスト · GitHub

 

コードの階層構造は次のようになっています。

Get__バーコード番号一覧・・・セルに入力されたバーコード一覧を取得する部分

MakeBarcode_JAN・・・バーコードを生成してセルに貼り付ける部分

SetPictureInCell・・・バーコードのセル内でのサイズ、位置を調整する部分

 

PR

☆ExcelVBAによる業務改善ツール開発を承っております☆

「実績多数」

   あらゆる業界の対応経験あり。合計実績396件(2023.08.29時点)

「懇切丁寧」

   お客様の困りごと、解決したいことが明確になるまでしっかり打合せします。

   目的は言われたとおりに作るのではなく、問題を解決すること!

「低価格」

   個人開発であるため法人に依頼するより低価格で対応可能です。

coconala.com

中級者向けVBA課題 No.14 (選択セルからコード生成)

概要

今回も「実装出来たら便利!」って問題

 

↓課題内容

 

処理の過程を画像で説明すると下記画像のようになります。

 

この処理ができるようになると、VBAでコードを書くとに

  1. 参照先のセルアドレスを調べる「例:B2」
  2. VBAでセル参照のコードを記述する「例:Range("B2")」

という手順を一気に効率化することができます。

 

実装のポイント

下記項目をクリアすれば同じようなものが作れます。

詳細はググるなり、今時なら生成AIに聞けば答えが出てくるので詳細の解説は行いません。

  • 選択中のセル範囲の取得(SelectionがRangeオブイジェクト以外の場合のエラーハンドリングも必要)
  • 選択セルが名前定義の場合にその名前を取得
  • コードを自動生成してクリップボードに格納

 

コード

実装したユーザーフォームにおけるVBAのコードだけ抜粋します。 

MakeCodeGetCellDirect · GitHub

 

頂いた回答

今回はまだ回答をいただいておりません。

自ら試行錯誤した経験が自分の価値につながります!みんな頑張ってね!

 

前回課題

softex-celwear.hatenablog.com

次回課題

 

PR

ExcelVBAでのツール開発を承っております。(対応実績350件以上 2023.8月)

お気軽にご相談ください。

coconala.com

 

中級者向けVBA課題 No.13 (ヘッダーからEnumの自動生成)

概要

今回も「実装出来たら便利!」って問題

 

↓課題内容

 

Enum(列挙体)はVBAにおいて配列の列番号などを参照する際に大変便利なものです。またコードの可読性、メンテナンス性を向上させることができます。

しかし、事前準備が大変になるのでこの処理を効率化するためのテクニックです。

 

実装のポイント

下記項目をクリアすれば同じようなものが作れます。

詳細はググるなり、今時なら生成AIに聞けば答えが出てくるので詳細の解説は行いません。

  • 選択セル範囲から値取得
  • InputBoxで値の入力
  • コードの自動生成とクリップボード格納

 

コード

実装したユーザーフォームにおけるVBAのコードだけ抜粋します。 

MakeCodeEnum · GitHub

 

頂いた回答

今回も回答をいただきました。毎度ありがとうございます!

 

前回課題

softex-celwear.hatenablog.com

次回課題

softex-celwear.hatenablog.com

PR

ExcelVBAでのツール開発を承っております。(対応実績350件以上 2023.8月)

お気軽にご相談ください。

coconala.com

 

中級者向けVBA課題 No.12 (シート内の名前定義一覧表示と削除)

概要

今回も「実装出来たら便利!」って問題

 

↓課題内容

 

セルの名前定義は

  • VBAからセルを参照において、セルが移動しても処理に影響しない
  • 定義範囲のセルに行・列が挿入、消去で範囲が変わっても定義範囲がついてきてくれる。

などのメリットがありますが、

  • 定義位置が後でわかりづらくなる。
  • Excel標準機能の「名前の管理」機能が使いづらい

などのデメリットがあります。

 

 動画のユーザーフォームは、

  • 表示しているシート内のセル名前定義を一覧(ListBox)で表示する
  • 一覧において特定の名前定義をクリックするとそのセル範囲を選択する
  • 一覧表示の頭には定義範囲が「S:シート内」「B:ブック内」で表示される
  • 「消去」で名前定義を消去が可能
  • 選択した名前定義で「Delete」キーで名前定義の消去が可能

のような操作ができるような設計になっています。

標準機能の「名前の管理」を実務で必要な機能に絞って、より使いやすく設計している感じです。

 

実装のポイント

下記項目をクリアすれば同じようなものが作れます。

詳細はググるなり、今時なら生成AIに聞けば答えが出てくるので詳細の解説は行いません。

  • ユーザーフォームにおけるコマンドボタン、リストボックスの扱い方
  • リストボックスでの一覧から選択時の処理
  • シート内のセル名前定義一覧取得と、定義範囲の取得
  • リストボックスでの選択時のキーボード操作(Deleteキー)での処理実行

 

コード

実装したユーザーフォームにおけるVBAのコードだけ抜粋します。 

frm名前定義一覧 · GitHub

 

頂いた回答

今回も回答をいただきました。毎度ありがとうございます!

 

前回課題

softex-celwear.hatenablog.com

次回課題

softex-celwear.hatenablog.com

PR

ExcelVBAでのツール開発を承っております。(対応実績350件以上 2023.8月)

お気軽にご相談ください。

coconala.com

 

中級者向けVBA課題 No.11 (列幅の切り替えボタン)

概要

今回も「実装出来たら便利!」って問題

 

↓課題内容

 

ツイートの動画では0時から23時まで15分ごとに列が用意されている表があります。

各スタッフの作業時間などが着色されているような感じの表です。訪問介護サービスでそのスタッフの稼働時間などの可視化で実際に依頼があったものです。

以下、シフト表と呼びますが、このシフト表は1時間が4列なので合計4x24=96列もあって列数が多くなってしまいます。そのために表示スペースの節約で列幅を狭めてしまうと、中に文字列などの情報を入力したときに見にくくなってしまいます。

これを解決するために必要な範囲だけ列幅を広くしたりできると便利です。

 

動画では、特定のセル範囲と同じサイズのボタンを押すと列幅が広い/狭いが切り替わります。ボタンはその設置されているセル範囲に合わせて処理を行うことができます。

 

実装のポイント

下記項目をクリアすれば同じようなものが作れます。

詳細はググるなり、今時なら生成AIに聞けば答えが出てくるので詳細の解説は行いません。

  • ボタンが設置されている範囲のセルを取得(TopLeftCell,BottomRightCell)
  • 列幅の変更(EntireColumn.ColumnWidth)

コード

実装したExcelにおけるVBAのコードだけ抜粋します。

SwitchColWidth · GitHub

 

頂いた回答

今回も回答をいただきました。毎度ありがとうございます!

 

前回課題

softex-celwear.hatenablog.com

次回課題

softex-celwear.hatenablog.com

PR

ExcelVBAでのツール開発を承っております。(対応実績350件以上 2023.8月)

お気軽にご相談ください。

coconala.com