オブジェクト名の変更と置換のやり方 【VBA在庫管理#14】

Excel VBA 部品在庫管理アイキャッチ画像部品在庫管理

痴漢の冤罪が怖くて電車に乗らなくなりました、どうもoReです。

今回は、オブジェクト名の変更をしていきます。

オブジェクト名の変更

前回、部品登録フォームを追加したんですけど、
UserForm1UserForm2だとわかりにくいので、
今回はオブジェクト名を変更します。

 

・UserForm1のオブジェクト名をMainへ変更

・UserForm2のオブジェクト名をTourokuへ変更

オブジェクト名変更

こうしておくと、これは何のユーザーフォームかわかりやすくなります。

 

このまま、Excel上からユーザーフォームを表示させると
エラーが出てしまいます

エラーオブジェクトが必要です

(# ゚Д゚)『オブジェクトが必要です。』

 

オブジェクト名をUserForm1からMainに変更したので、
UserForm1っていうオブジェクトはねーよ!!って事です。

Sub Hyouzi()
  UserForm1.Show
End Sub

もちろん、部品登録フォーム表示時もエラーがでます。

 

痴漢× 置換○

プログラムを変更しないといけません。

・UserForm1→Main

・UserForm2→Touroku

この程度のプログラムであれば、探し出して変更はさほど訳ないですが、
プロのグラマーな方等が作るプログラムは、大量のコードが書かれていて、
変更する箇所を探すのが大変です。

その時に役立つのが、置換です。

置換とは、置き換えることです。

ちなみに、

痴漢(ちかん)とは、性暴力の一つであり、相手の意に反して性的行為を行う者、もしくは行為そのものを指す。法律や条例によって処罰される性犯罪である。

Wikipediaより抜粋

 

痴漢ダメ!!絶対!!

プレイならいいよね?(照)

oReステキ

それでは、置換してみましょう。

とりあえず、Mainフォームのコードを表示させて

編集置換

検索する文字列(F):に、『UserForm1』を入力

置換後の文字列(W):に、『Main』を入力

置換のやり方

 

すべて置換(A)ボタンを押してみましょう。

エラー検索文字列が見つかりません

 

『検索文字列が見つかりません。』と、エラーがでましたよね。

これは、対象が『カレント モジュール(M)』になっているためです。

カレントモジュール選択

 

・Current カァーラァントゥ

Currentは、『今の』『現在の』という意味らしいです。

 

・カレント プロシージャ(P)は、現在選択されているプロシージャ内のみ置換する

Sub ○○()
  この選択されたプロシージャ内のみ置換
End Sub

 

・カレント モジュール(M)は、現在選択されているモジュール内のすべてを置換する

Mainモジュール

 

・カレント プロジェクト(C)は、選択されているプロジェクト内のすべてを置換する

部品在庫管理プロジェクト

 

UserForm1と書いたコードはどこにあるかというと、
Sheet1(データベース)モジュール内の、
Hyouziプロシージャ内に書いてあります。

現在選択しているのは、Mainフォームモジュールなので、
このモジュール内には『UserForm1』はありませんって意味です。

なので、置換対象をカレント モジュールではなくて
カレント プロジェクトにして、すべて置換ボタンを押してください。

置換できましたか?

oReのぞき見

※UserForm2もTourokuへ置換しましょう。

無事置換できていれば、ユーザーフォームを表示できるようになります。

 

Worksheets(“入出庫履歴”)

ちなみに、オブジェクトとは物体と言う意味みたいです。

ブックもシートも、コマンドボタンもラベルも物体ですよね?

その物体の名前が、オブジェクト名というわけです。

幽霊は物体か?霊体か?

『幽霊』←これがオブジェクト名だとすれば…

 

物体ですよ!!

 

幽霊はいるんですよ!!奥さん!!
ほら、あなたの後ろに。

oReのぞき見

それでは、入出庫履歴シートのシート名を変更して、
ユーザーフォームを表示してみます。

エラーインデックスが有効範囲にありません

(# ゚Д゚)『インデックスが有効範囲にありません。』

 

シート名を変更したので、そのシート名はねーよ!!って事です。

これは、シート名を指定してプログラムを書いているので
エラーが出ています。

Worksheets("入出庫履歴")
ワークシート名("入出庫履歴")

 

もし誰かがシート名を変更したらエラーが出てしまうので、
シートを指定する場合、オブジェクト名で指定したほうがいいですね。

Sheet2(入出庫履歴)

↑このSheet2というのがオブジェクト名になってます。

もちろん、自分でオブジェクト名を付けることができます。

ただ、面倒臭いのでそのままで進めます。

だって、オブジェクト名の横にシート名でてますし、わかるし、お寿司。

 

では、『Worksheets(“入出庫履歴”)』を『Sheet2』へ置換
『Worksheets(“データベース”)』を『Sheet1』へ置換しましょう。

ちなみに、置換のショートカットキーは

Ctrlキー + H です。

痴漢だけに、Hってか…わざとか?ねらってるよね?(笑)
でも覚えやすいですよね。

これで、シート名を変更されてもエラーが出なくなります。

 

まとめ

オブジェクトとは物体
置換とは置き換えること
痴漢はダメ!!絶対!! プレイなら可!!
・カレント プロシージャ(P) プロシージャ内のみ置換する
・カレント モジュール(M)   モジュール内のすべてを置換
・カレント プロジェクト(C) プロジェクト内のすべてを置換
シートを指定する場合、オブジェクト名で指定したほうがいい

oRe痴漢ダメ

次回 繰り返し処理を使ってみるよ

ExcelVBA部品在庫管理【目次】へ戻る

コメント

タイトルとURLをコピーしました