
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の内容を書き換えるだけで
済みます。
複数の顧客を処理するなら、顧客リストでも作っておいて、そこを読み込んでループさせれば
よいかと思います。
ご質問の意図とは違うかもしれませんが、ご参考まで
No.3
- 回答日時:
>全顧客の売上データが入ったシートが1枚あり、そのデータを各顧客シートにあるコマンドボタンを
>クリックすることにより、該当する顧客のデータをその各顧客シートに表示させるようにしたいと
>考えています。
ほかの方々のアドバイスと同じですが
全顧客の売上データが入ったシートが1枚あり
別のシートのあるセルに顧客名を入れると
該当する顧客のデータがその顧客シートに表示させるようにしたい
となる様に考えた方が便利なはずです。
シートの構成は
1、全顧客の売り上げデータ
2、ある顧客のデータを抽出して表示するシート
3、2のシートで顧客名を選択するために、顧客リストが入っているシート
1の全顧客の売り上げデータがどうやって入力されているのかにもよりますが、
上記の3枚のシート構成を考えると十分だと思います。
No.2
- 回答日時:
質問者のやりたいことが正確に伝わらない。
VBAをする以前の問題。>全顧客の売上データが入ったシートが1枚あり
これはいつまでも1つか。月が経て、データが増えても、前の月までの分に同じシート上で増やしていくのだね。
>顧客が増えたりするとシートを増やすのですが
新規顧客が出たら、その顧客用にシートが必要ということでしょう。
シートを1枚その会社名などにしてシート挿入したら仕舞い。
テンプレート的なシートが造れるなら、そのシートを同一ブック内にコピーしたら仕舞いではないのか。
ーー
シートのコピーはマクロの記録を取ればどいうコードになるか判る。
>シート名が変更になった場合でも
とはどういうことか。説明不足。社名変更ならシート名を変えないといけない。
シートをコピーしたとき新しく出来たシート名の名前は任意に付けられるのを知らないのか。
下記ではSheet1がテンプレート的な、シートの場合です。
cccは新規顧客(会社名)に当たる。
ーー
Sub test01()
Worksheets("sheet1").Copy after:=Sheets(3)
ActiveSheet.Name = "ccc"
End Sub
この2行は続いてコードを書くこと。
>”○○会社”シート:ファイル名任意
何のこと、新規顧客名が未定なのは当たり前。
決ったときに操作者に、シート名を指定させるということか。
それならInputBoxででも、操作者に指定(入力)させたらしまいでは。
>クリックすることにより、該当する顧客のデータをその各顧客シートに表示させるようにしたいと
これは今回質問のメインの話題ではないよね。余分なことを質問異書くと紛らわしい。
ーー
学習を始めても「、直ぐ総合的な問題に取り組めないでしょう。
ブック・シート・セル(行・列)の基本的な、新規・追加・変更・削除。移動、名前変更、コピーなど、どういうコードになるかノートにでも整理して、一通り学習してから取り組まないと。
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")
とかでもできますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル 多数のファイルから値を抜き出したい 4 2022/12/12 16:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) Excel ファイルを指定し、指定されたファイル内にシートを統合するVBA 8 2023/07/10 10:09
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセル VBAでBook モジュールのプロシージァ(コード)に除外シートを設定したい 1 2023/01/11 15:53
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Visual Basic(VBA) 2つの条件に合うセルにデータを転記したい 4 2022/12/02 11:05
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
特定のシートの削除を禁止した...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
エクセルで前シートを参照して...
-
Excelで金銭出納帳。繰越残高を...
-
Excel、同じフォルダ内のExcel...
-
別シート参照のセルをシート毎...
-
VBAで条件によりフォントサイズ...
-
エクセルで前のシートを連続参...
-
EXCEL:同じセルへどんどん足し...
-
エクセル 計算式も入っていない...
-
エクセルでファイルを開いたと...
-
複数シートの特定の位置に連番...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルVBAでパスの¥マークに...
-
エクセルで複数設定したハイパーリンク先...
-
エクセル 別シート参照の簡単...
-
excelでシート毎の最終更新日を...
-
添付写真上のExcelシートのよう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルで前シートを参照して...
-
Excel、同じフォルダ内のExcel...
-
特定のシートの削除を禁止した...
-
EXCEL:同じセルへどんどん足し...
-
エクセル 計算式も入っていない...
-
Excelで金銭出納帳。繰越残高を...
-
複数シートの特定の位置に連番...
-
エクセルでファイルを開いたと...
-
シートの保護のあとセルの列、...
-
Accessのスプレッドシートエク...
-
VBAで条件によりフォントサイズ...
-
VBAでシートコピー後、シート名...
-
エクセルで前のシートを連続参...
-
エクセルVBAでパスの¥マークに...
-
EXCELで同一フォーマットのシー...
-
Excelで同じシートのコピーを一...
おすすめ情報