素人がExcelVBAによる「一人働き方改革」に挑むブログスマートフォン用の表示で見る素人がExcelVBAによる「一人働き方改革」に挑むブログExcelVBAネタです。2019-05-09シート名の変更を検知する(Excel)VBA自作メソッドシート名の変更を検知する(Excel)各所から集めた大量のExcelブックを処理するとき、配布した様式ブックに保護をかけ忘れると、それはもう、好き放題にシート名をいじくられるwマクロで処理しようにも、シート名とかシートの順序を変えられると、ちょっと対応がむつかしいので、シート名が本来のあるべき姿から変わり果ててしまったブックを検出するメソッドを作ってみた。コーディングWorksheetsコレクションのインデックスに、ブックに存在しないシート名を指定すると、実行時エラーが出るので、その性質を利用した。Booleanで引数設定。今回は、ブックオブジェクトと適切なシート名を格納したString型配列を受け取るようにした。返り値はBoolean型。適切なシート名のシートが完備されていればTrueを返す。Finalizerで、エラーが出たら、一番下のラベルにワープするようにした。Falseで初期値を明示的にFalseにしているので、エラーが出た瞬間、Finalizer:ラベルにワープしてそのまま抜ける。存在しないシート名にぶつかると、Falseが変えるしくみ。targetBook.Worksheets(shNamesArray(i)).NameNextがメイン。引数として受け取ったシート名を順にWorksheetsコレクションのインデックスに指定し、取得したWorksheetオブジェクトのNameプロパティの値(要するにシート名の文字列)を変数stalkingHorseにぶち込む。Horse!!!!!!!!存在しないシート名だったら、実行時エラーが出るので、Finalizer:ラベルまで飛び、エラーをクリアしてFalseを返す。Trueで返り値をTrueにする。使ってみる同じフォルダ内に、Test.xlsxというブックを置き、シート名をこのように設定しておく。SubSplitの返り値をString型の配列にぶち込むことができる、というのは初めて知ったかもしれない。hasAppropriateSheetNamesを2回呼んでいるが、1回目は「空気」というTest.xlsxには存在しないシート名を配列にぶち込んでいる。2回目は、全てTest.xlsxに存在するシート名を配列にぶち込んだ。おわりにエラーを判定材料に使っているというのがイマイチかも。他にどんなやり方があるかなあ。»プロフィールid:akashi_keirinExcelVBAネタです。SyntaxHighlighter.all();注目記事はてなブログをはじめよう!akashi_keirinさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。