• ベストアンサー

VBA:ワークシート名の変数格納

ユーザーフォームを使用して、ワークシート名を表示しまして、選択したワークシート名を変数に収めて、Workshees(変数)みたいな感じで処理の対象にしていきたいと考えています。 何が適切な方法かわからない状態です。 もしよろしければコードも教えてください。よろしくお願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

>ユーザーフォームを使用して、ワークシート名を表示しまして、選択したワークシート名を変数に収めて どこに表示したシート名を選択するのかが定かではないのでなんですが、 選択とあるので、ComboBoxかListBoxでしょうから。   '-------------------------------------------------   Dim mySheet 'コンボボックスの場合   mySheet = ComboBox1.List(ComboBox1.ListIndex) 'リストボックスの場合   mySheet = ListBox1.List(ListBox1.ListIndex) '選択したシートのセルB7に"777"を代入する   Sheets(mySheet).Range("B7").Value = 777 '----------------------------------------------- 以上。  

yousukei
質問者

お礼

ありがとうございました。 お蔭様で解決しました。

関連するQ&A

  • VBA コンボボックスにシート名を表示

    ExcelVBA初心者です。 ユーザーフォームの中にコンボボックスを作成し、現在使用しているbookのワークシート名をすべてリスト表示させたいのですが、どうしたら良いでしょうか? ワークシート名はSheet1、Sheet2、Sheet3です。 よろしくお願いします。

  • ワークシートに対して処理をするVBAについて

    初めまして、ワークシートに対して処理をするVBAの記述に関して質問させてください。 複数のシートがあり、そのうち3シート目以降から最後のシートまで特定の処理をしたいと考えています。(最後のシートまでの数はそのときによって変動します。) しかし、 For Each sh In Array("A", "B", "C") のようにシート名を指定すると選択したシートに同時に処理をしてしまいます。選択したシートに同時に処理をするのではなく、1シート目を処理したら次のシート…という方法にしたいのですが、この場合どのように記述すればよいのでしょうか…?(T_T) ちなみに、 For Each sh In Worksheets という記述だと、全てのシートが処理の対象になってしまうのでだめなんです…。3つ目以降のシートに処理をしたいのです…!どなたかご教示いただけると嬉しいです!よろしくお願い致します!m(_ _)m

  • EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作り

    EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作りました。そのワークシート上での定数や、プロシージャや関数をワークシートのモジュールに置いています。そして、その定数や関数などをユーザーフォームのイニシャライズなどで使いたいと思いますが、ユーザーフォームのモジュールはワークシートのモジュールとは別なので、使えません。他への影響を考えると、標準モジュールには、置くのは不適切だと思います。 特定のワークシート上でのみ使うユーザーフォームと、そのワークシートとで、共通の定数や関数などを使う方法は、あるのでしょうか。どのようにすればよいのでしょうか。

  • VBAワーク シート名前を付けて作成

    エクセルVBAにて 原紙とゆう名前のワークシートをコピー処理して 入力フォームにテキストボックス1と2があり コピーした原紙とゆうワークシート名から テキストボックス1と2に入力した項目が 合わさってワークシート名に変更する方法はあるのでしょうか? 例)テキストボックス1に 123   テキストボックス2に 456 コマンドボタン1をクリックすることによって ワークシート名が123456となるようにしたいのですが? 宜しくお願いいたします。

  • VBA 変数の受け渡し

    エクセルVBAで標準モジュール内でインプットボックスに入力した変数をユーザーフォームに受け渡してユーザーフォーム内のリストボックスに表示させる場合どのように変数の受け渡しを行えばよいか教えてください。 現在は、一度ワークシートの任意のセルに値を書き出し、その後ユーザーフォームのイニシャライズで先ほどのセルから値を受け取るようにしています。 標準モジュールではインプットボックス入力後「UserForm1.Show」でユーザーフォームの立ち上げを行っています。

  • VBAでワークシートを変数にするとき

    たとえばSheet1とSheet2を一度に選択する場合、 Sub Macro6() Sheets(Array("Sheet1", "Sheet2")).Select End Sub と書くと思います。 ワークシートを変数で書く場合は Sub test() Dim ws1 As Worksheet, ws2 As Worksheet Sheets(Array(ws1.Name, ws2.Name)).Select End Sub と、いちいち名前で指定しなければならないのでしょうか? それとももっと別の書き方があるのでしょうか?

  • Excel VBA実行中にワークシートを操作したい

    ユーザーフォームなどを表示中に ワークシートをクリックすると、ビープ音がなって 操作できないのですが、 操作する方法は ありませんか

  • VBA ユーザーフォームの値の取得方法

    いつもお世話になっております。 以下のような仕様のVBAコードを作成したいと考えています。 (貼付資料も参照してください) ■仕様  (1)ユーザーフォーム   1.処理の対象となる市名をチェックボックスから選択   2.処理の対象となるシート名をコンボボックスから選択  (2)ユーザーフォームで選択した    選択したシートの対象市名のデータを配列に格納  (3)格納した配列を元に一覧、詳細の表を作成 ■オブジェクト  ●ユーザーフォーム  ・フレーム   Frame1:神奈川県 Frame2:茨城県 Frame3:栃木県 Frame4:対象年度  ・チェックボックス   CheckBox1:フレーム外の全選択   CheckBox2~4:各フレームの全選択   CheckBox5~11:市町村名(横浜市~小山市の順)  ・コンボボックス   ComboBox1:対象年度  ●ワークシート ■不明な事  (1)⇒(2)の処理(ユーザーフォームで選択した項目を他のプロシージャで使用する)  について質問させていただきます。  私の頭の中では、  I.パブリック変数を用意して、CheckBoxやComboBoxで選択した項目を格納  II.プロシージャ引数として・・・  の2つの方法が候補として浮かんでいます。  Iに関して  CheckBox1:対象年度については、オブジェクトが1つしかないので、  適当なパブリック変数(今回はmySh)を用意して、  mySh=Combobox1.Value  とすれば、仕様は満たせると思いますが、  CheckBoxに関しては、数が多いので,どのようにすれば良いのかイマイチ分かりません。  IIに関しては、全く見当が付きません。 ■質問  (1)上記の処理を行う場合は、I又はIIの方法で問題無いでしょうか?  (2)I又はIIの方法の優劣はあるのでしょうか?  (3)I、IIの方法を教えてください。 どうぞよろしくお願いします

  • ユーザーフォームにワークシートの内容を表示したいのですが

    エクセル2003を使用しています。 ユーザーフォームを利用してワークシートの内容を表示させたり変更したりすることを考えています。方法はプロパティーのControlSourceにセル番地を書いてあります。 複数のシートがあり1つのシートにつき1件のデータです。 作業したいシートをアクティブにしてユーザーフォームを表示させると、前回作業した内容のままでユーザーフォームが表示されてしまいます。 一度消して再表示するとアクティブシートの内容を表示します。 このような状態なのですが、当然最初からアクティブシートの内容を表示させることが希望です。改善策はありますでしょうか。

  • vba ワークシートを変数を用いて開くには

    初歩的な質問ですが、 ワークシートの書式が新しくなったことで、書き換えをすることになりました。 現在のエクセルファイルから、新しいエクセルファイルへ、セルの値を参照しながら VBAにて作業をしたいのですが、 Sub changesheet() Dim iname As String Dim wbname As String iname = InputBox("ブック名を入力", "対象ブックを入力") wbname = "シート2012(" & iname & ").xls" ActiveSheet.Range("P4").Value = Workbooks(wbname).Worksheets("Sheet1").Range("P4").Value End Sub この記載で実行すると、インデックスが有効範囲にありません とエラーになってしまいます。 変数(inputbox)を用いたセルの参照はどのように記述すればよろしいでしょうか? よろしくお願いします。

専門家に質問してみよう