シート名が変わる場合のVBAの設定の仕方

このQ&Aのポイント
  • VBAを使用して、エクセルで顧客管理シートを作成中です。新しい顧客を追加する際に、シート名が変更される場合のVBAの設定方法を知りたいです。
  • 顧客管理シートで、各顧客のデータを表示するために、VBAを使用しています。しかし、新しい顧客が追加されると、シート名が変更されるため、VBAの設定を変更する必要があります。そこで、シート名が変わってもVBAの設定を変更せずに済む方法を教えてください。
  • エクセルで顧客管理シートを作成しています。新しい顧客が追加されると、シート名が変更される可能性があります。VBAの設定を変更する手間を省くために、シート名が変わってもVBAが正常に動作する方法を教えてください。
回答を見る
  • ベストアンサー

シート名が変わる場合のVBAの設定の仕方

VBAを勉強しながらエクセルで顧客管理シートを作っています。 全顧客の売上データが入ったシートが1枚あり、そのデータを各顧客シートにあるコマンドボタンを クリックすることにより、該当する顧客のデータをその各顧客シートに表示させるようにしたいと 考えています。 顧客が増えたりするとシートを増やすのですが、VBAの参照先シート名が固定されているため、 汎用的ではありません。 そこで顧客シートのオリジナルを作っておき、新しい顧客ができた場合はそれをコピーして使用する ようにしたいと思います。 シート名が変更になった場合でもVBAを書き直したりすることがないようにするにはどのようにしたら よいでしょうか? Excelのシート構成は ”売上データ”シート:ファイル名固定 ”○○会社”シート:ファイル名任意 ”△○会社”シート:ファイル名任意 よろしくお願いいたします。

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

  • ベストアンサー
回答No.4

こんにちは Worksheets("○○会社").~のように、プログラム中に直接シート名を書いている ということでしょうかね・・ シート名を変更して汎用的に使用するようなプログラミングをするなら 設定シートのようなシートを設けて、そこに情報を記載しておき、初期設定でそこから シート名を変数に読み込んで、汎用性を持たせるような方法もあります。 設定シート A1の内容 ○○会社 VBAの中で必ず、最初に初期設定として設定シートから顧客名を取得するようにします。 Dim Kokyaku_Sheet As String Kokyaku_Sheet = Worksheets("設定シート").Range("A1").Value    : Sheets(Kokyaku_Sheet).Select など・・ この例では、Kokyaku_Sheetという変数を使用してプログラミングを行います。 こうしておけば、シート名を変更したい場合には、設定シートのA1の内容を書き換えるだけで 済みます。 複数の顧客を処理するなら、顧客リストでも作っておいて、そこを読み込んでループさせれば よいかと思います。 ご質問の意図とは違うかもしれませんが、ご参考まで

TAKENKO
質問者

お礼

ご指導いただいた点でクリアになれば今の問題は解決すると思います。 早速やってみたいと思います。ありがとうございます。

その他の回答 (3)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

>全顧客の売上データが入ったシートが1枚あり、そのデータを各顧客シートにあるコマンドボタンを >クリックすることにより、該当する顧客のデータをその各顧客シートに表示させるようにしたいと >考えています。 ほかの方々のアドバイスと同じですが 全顧客の売上データが入ったシートが1枚あり 別のシートのあるセルに顧客名を入れると 該当する顧客のデータがその顧客シートに表示させるようにしたい となる様に考えた方が便利なはずです。 シートの構成は 1、全顧客の売り上げデータ 2、ある顧客のデータを抽出して表示するシート 3、2のシートで顧客名を選択するために、顧客リストが入っているシート 1の全顧客の売り上げデータがどうやって入力されているのかにもよりますが、 上記の3枚のシート構成を考えると十分だと思います。

TAKENKO
質問者

お礼

なるほど。そのほうがシンプルですね。 少し複雑に考えていました。ありがとうございます。

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

質問者のやりたいことが正確に伝わらない。VBAをする以前の問題。 >全顧客の売上データが入ったシートが1枚あり これはいつまでも1つか。月が経て、データが増えても、前の月までの分に同じシート上で増やしていくのだね。 >顧客が増えたりするとシートを増やすのですが 新規顧客が出たら、その顧客用にシートが必要ということでしょう。 シートを1枚その会社名などにしてシート挿入したら仕舞い。 テンプレート的なシートが造れるなら、そのシートを同一ブック内にコピーしたら仕舞いではないのか。 ーー シートのコピーはマクロの記録を取ればどいうコードになるか判る。 >シート名が変更になった場合でも とはどういうことか。説明不足。社名変更ならシート名を変えないといけない。 シートをコピーしたとき新しく出来たシート名の名前は任意に付けられるのを知らないのか。 下記ではSheet1がテンプレート的な、シートの場合です。 cccは新規顧客(会社名)に当たる。 ーー Sub test01() Worksheets("sheet1").Copy after:=Sheets(3) ActiveSheet.Name = "ccc" End Sub この2行は続いてコードを書くこと。 >”○○会社”シート:ファイル名任意 何のこと、新規顧客名が未定なのは当たり前。 決ったときに操作者に、シート名を指定させるということか。 それならInputBoxででも、操作者に指定(入力)させたらしまいでは。 >クリックすることにより、該当する顧客のデータをその各顧客シートに表示させるようにしたいと これは今回質問のメインの話題ではないよね。余分なことを質問異書くと紛らわしい。 ーー 学習を始めても「、直ぐ総合的な問題に取り組めないでしょう。 ブック・シート・セル(行・列)の基本的な、新規・追加・変更・削除。移動、名前変更、コピーなど、どういうコードになるかノートにでも整理して、一通り学習してから取り組まないと。

TAKENKO
質問者

お礼

質問内容が漠然としている中、ご指導にありがとうございます。 1つ1つ取り組んでみたいと思います。ありがとうございました。

  • pai3_14
  • ベストアンサー率56% (319/566)
回答No.1

やりたいことが イマイチ理解できていないので 当っているかどうか分かりませんが。 シート名の指定は 固定しなくとも シートのNo を使い シートオブジェクトSheets(n)で取得できます。 一例: Sheets_Count = Application.Sheets.Count For n = 1 To Sheets_Count Sheets(n).Select MsgBox "シート名は " & ActiveSheet.Name & "です。" Next n End Sub その他、A2セルにシート名(会社名)を入れて そのシート名の A1セルを参照するには =INDIRECT(A2 & "月!A1") とかでもできますが。

TAKENKO
質問者

お礼

ありがとうございます。 早速トライしてみたいと思います。

関連するQ&A

  • ExcelのVBAで、ソース自体が書かれたシート名

    ExcelのVBAで、ソース自体が書かれたシート名を取得したいと考えています。 やりたいことは、シートAからシートBに切り替えたときにシートAを削除したい。そこでシートAにworksheet_deactivateを追加して削除文を記載したのですが、activesheetで取得できるのはシートB名のためシートBが削除されてしまいます。 ソース自体はオリジナルシートがあり、シートAはオリジナルシートからコピーしたものです。 オリジナルシートは他シート名でもコピーすることがあるため、ソースに固定シート名は使えません。 なにか方法はないでしょうか?

  • Access VBA インポート シート指定

    AccessのVBA を用いて、ExcelからAccessへデータを インポートする際、ダイアログボックスを表示させて Excelのファイルを選択させるようにしています。 これをシート名まで指定させる事は可能でしょうか? ◆シートは枚数が固定されず、都度かわります。 ◆インポートしたいシート数も都度かわります。 ◆1sheet = 1 テーブルにしたいです。 ◆1度の動作で、1sheetのインポートでも、複数でもかまいません。 ◆できれば、ダイアログでファイルを選択した流れで シートまで選択される方法が望ましいです。 ◆Accessのテーブル名もテキストボックスで任意なものが 付けられるようにしたいです。 お知恵をお貸し下さい、何卒よろしくお願いいたします。

  • 【VBAでシート名の存在チェックを行いたい】

    目的は、特定したExcelファイルを開き、そこに存在するシート名が、あるシート名リストと一致するかどうかの判断を行うことです。 シート名を参照しようとすると、存在しない場合エラーになります。 例: Excelブック     シート名リスト 「顧客」シート   「住所」 「住所」シート   「趣味」 「会社」シート シート名リストの「趣味」がブックに存在しないので、エラーになります。 他の方法をご存知の方、教えて頂けますでしょうか? 宜しくお願いいたします。 Excel2000を使用しています。

  • Excel VBA 複数シートを各シート名で保存

    Excel VBA で、複数シートを各シート名で保存したい場合はどうすればいいでしょうか? シート名が、[フォーム] [A社] [B社] [C社] [D社] … というBookがあります。 [フォーム]シートを除く他のシートを、シート名をそのままファイル名にして、 それぞれ別ファイルで保存する場合、どのように記述すればいいのか どなたかおわかりになりましたら、教えてください。 よろしくお願いします。

  • Excelシートを分割してcsvに出力するVBA

    すいませんが、ご教示願います。 パソコンExcelのVBAです。 Excelファイルシートの24,000行あるデータを、 任意に選択した範囲(例えば2行目から3,000行目)をcsvデータに出力する VBA構文が知りたいです。 どなたかおわかりになりますでしょうか。

  • Excel2000 VBAで新規シート名を他のシート名と重ならないようにつけるには?

    始めまして。早速ですが、今頭を抱え込んでいる私の悩みを聞いて下さい。 シート名を追加するプログラムで、「シートを追加」というボタンを押すと、 Inputboxを表示し、そこに任意の番号("見積書1"や"請求書1"の数字部分)を入力して、その番号をシート名として取得すると同時に、シートを追加するようにしたいのです。 その過程で、新しいシートの名前をつける際に、同じブック内に既に存在する複数 のシート名と照らし合わせて、もし、既存の番号と同じ番号をInputBoxに入れたときには、「他の番号を入力してください」と再度InputBoxを表示させたいのです。 そして、シート名がブック内に同じものがない場合にのみ、シートを追加するというものです。 VBAを使うより、手動ですれば?という考えももちろん解決方法の一つかとは思いますが、何分Excelを始めて使う年老いた父のために、少しでも簡単に操作できるようにという思いから質問させて頂いております。 どうぞよろしくお願いいたします。

  • VBA アクティブなセルのシート名を取得したい

    エクセル2010使用です。 VBAで、アクティブなセルのあるシート名を取得する方法を教えてください。  マクロ.xls (マクロシートA1) ←今回のマクロを書き込んだファイル  参照.xls (参照シートA1)  入力.xls (入力シートF3) この3つのエクセルファイルを開きます。 ( )内はそれぞれの前面にあるシート名と選択されたセルです。 入力シートのF3にカーソルをおいて下記マクロを実行すると   MsgBox ActiveSheet.Name & ActiveCell.Address 「マクロシート F3」と返されます・・・ ほしい結果は「入力シート F3」なんです。 このような場合にアクティブセルのあるシート名を取得する方法があれば教えてください。 よろしくお願いいたします。

  • vba ブック間でシート名のコピーをするには

    始めまして、よろしくお願いします。 excel vba 初心者のものです。 2つのブックがあり同時に開いている状態です。1つのブックはデータがあります。 もう1つは空のブックです。 データのあるブックのシートには、 シート1のシート名は「8月1日」 シート2のシート名は「8月2日」 シート3のシート名は「8月4日」 シート4のシート名は「8月5日」 シート5のシート名は「Sheet1」 やりたいこと データ、シート名があるブックから、 空ブックのシートにシート名をコピーしてきてセルに貼り付けたいです。 シートに名前を付けてるシート数は不規則なので「Sheet1」まで来たら終了したいです。 どうぞご教授の程よろしくお願い申し上げます。

  • エクセルVBAにて選択したセルが空白の場合任意のシートに飛ばした

    エクセルVBAにて選択したセル(A1とします)が空白の場合任意のシート(Sheet2とします)の任意のセル(B1とします)を選択させる場合どのようにしたらよいでしょうか?

  • エクセルVBAでファイル・シート名を指定して、現在のブックのシートにコピーしたい

    エクセルVBA独学中の超初心者です。 VBAを利用して以下のことがしたいのですが、わかりません。 助けて下さい。よろしくお願いいたします。 1. ファイルを選択する。 2. 1で選択したファイルから、シート名を選択する 3. 2で選択したシートを現在のブックのSheet1にコピーする

専門家に質問してみよう