• ベストアンサー

EXCELのワークシート名とセルの値の取得に付いて

EXCEL2000を使用しておりますが、ワークシート名と、そのシート内の複数のセルの値を取得し、別シートにマトリックス表示出来るように 入力フォームを設計したいのですが、固定の名称を予め組み込むのではなくフォーム上で入力したテキストをワークシート名及び、セルの位置として扱えるようにするのには、どのようなマクロを書けばよいでしょうか?例えばシート名A~Fの各シートのA1~F1のセルに10~15の数値が 入っていて、Gのシートでマクロを動かすと、シート名とセルの位置を 入力するフォームが現れ、それぞれ入力すると、指定されたシート名と セルの中の値が、Gシートに、1行ずつ追加されて行く処理をイメージ しています。何卒、宜しくご指導の程、お願いいたします。

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

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

(1)シート名は、文字列で、変数snに入っていれば Sub test01() sn = "Sheet3" Worksheets(sn).Select End Sub で選択できます。 (2)セル難易は 文字列でsにA1:B5などと入っていれば Sub test01() s = "A1:B5" Range(s).Select End Sub で捕まえられる。 範囲は Sub test02() Dim rn As Range Set rn = Application.InputBox("範囲=", Type:=8) rn.Select End Sub という便利なのがあるが、今回はフォームのテキストをつかう希望。 ーーー マクロはシートGに作る ユーザーフォームはGに表示 ーー ユーザーフォームに テキスト1->(データを採る)シート名文字列指定。A-Fまで6種ぐらい予想。 テキスト2ー>(データをとる)セルの位置を指定 データを採る(上記セルの位置など入力終了の)タイミングを知らせるコマンドボタンを1つ設ける。 Private Sub CommandButton1_Click() End Sub の中に処理のコードを書きこむ。 >1行ずつ追加されて行く処理 これは現在の最終行の次ぎの行、最終行.OFFSET(1,0)に、シート名+セルを上記で指定されたセルから持ってきて、セットする。 最終行は d = Range("G65536").End(xlUp).Row ーー こういう風に1歩1歩文章化する訓練が必要。 その際、1歩1歩の実現に必要なコードのスキル(通常1-3行)を調べていく訓練をしないと。 質問文が、したいことの羅列で流れている感じ。

NEO-apm
質問者

お礼

早速のご回答ありがとうございました。場にも慣れていないもので 勝手な質問の仕方で申し訳ありません。色々と大変参考になりました。 ありがとうごさいます。これからも宜しくお願い致します。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

VBAであれば Worksheets(Sheet_Name).Range("A1:F1").Copy '特定のシートの範囲をコピー Worksheets("G").Range("A65536").End(xlUp).Select 'シートGのA列の最終行を探す Selection.Offset(1, 0).Select '最終行のひとつ下の行を選択 ActiveSheet.Paste 'コピーした内容を貼り付け ※Sheet_Name はフォームのテキストボックス名として、ボタンを押した時に、 上記のマクロが走るようにするとか?

NEO-apm
質問者

お礼

ありがとうごさいました。まだまだ不勉強なもので、市販の参考資料などを読んでも、どう対処してよいものか、こまっておりました。早速 試させて頂きます。ありがとうございました。これからも宜しくお願いします。

関連するQ&A

  • EXCELでワークシートを検索して値を返したい。

    こんばんは。 いろいろ調べてみたのですが、わからなかったので質問させていただきます。 EXCELで「111」「222」「333」「444」「555」という五つのワークシート名を持つブックがあります。 「111」のシートのセル"A1"に,"222"と入力すると、隣のセル"A2"にシート「222」の特定のセルの値(例えばC20のセルの値)を返し、セル"A1"に「555」と入力するとセル"A2"にシート「555」の特定のセルの値を返すといったものを作るには、どうしたらいいんでしょうか? できれば関数だけで作りたいのですが、もしむりならマクロではどういうコードになるのでしょうか? よろしくお願いします。

  • Excelのマクロを使ってワークシート1にワークシート2のセルの値をコ

    Excelのマクロを使ってワークシート1にワークシート2のセルの値をコピーするマクロを作りたいと思っています。 例えば、ワークシート2のA1~A30のセルには1~30の値が順に入っているとします。 それをA1から3の倍数分、つまりA1,A3,A6,A9,・・・,A27,A30の値を ワークシート1のA1~A11のセルに自動で挿入してくれるマクロってどう作ればいいのでしょうか? わかりにくいかもしれませんが、よろしくお願いします。

  • エクセルで、ワークシート名をセルから参照する

    エクセルで、ワークシート名をセルに表示する方法は書いてありますが、セルの値をワークシート名とするにはどうしたらいいでしょうか。 つまり、 「ワークシート名 → セル」 ではなく、 「セルの値 → ワークシート名」 ということです。 現状、会社が変わると決算期が変わるため、決算期を変更する度にワークシート名を変えていますが、変わった都度ワークシート名を手で変更するのは手間が掛っています。 具体的には、例えば、 3月決算の会社のファイルは、4月シート、5月シート・・・ 12月決算の会社は、1月シート、2月シート・・・ のようにシート名を変えています。 そのため、セルに決算期を入力すると、自動で各ワークシート名も変更するようにしたいのですが、どうしたらいいでしょうか。 そういう関数はないようですし、マクロ・VBAの本等を見ても、よくわかりません。 宜しくお願い致します。

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

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

  • エクセルの複数のセルの値からシート名を自動変更する

    エクセルのシート名を複数のセルから自動で変更する場合のマクロを教えてください。 E6に「平成」、G6に「年」、I6に「月」、K6に「日」と入力されている状態で、 間のF6、H6、J6が空欄となっており、それぞれに年と月と日を入力するような状態となっています。 このF6、H6、J6に入力した年月日情報をシート名にするようなマクロは可能でしょうか? 「28.2.6」のように。もしくは「280206」のように6桁で。 また、F6、H6、J6の3つとものセルに値を入力した場合に、シート名が変更され、 その後に、それかのセルの情報を変更した場合は、その情報に変更されるようになればありがたいです。 下記のQ&Aが近いのですが、複数セルの情報からシート名を変更する方法が分かりません。 http://okwave.jp/qa/q2025849.html よろしくお願いします。

  • セルの値に応じて数式を入力するシートを変えたい

    シート名が 「aaa」 「bbb」 「ccc」 「ddd」 という4つのシートがあります。 シート「aaa」のD4セルに入力した値(シート名)に応じて、 (上記で設定したシート)のF7セルに "=SUM(F5:F6)"という数式を入力したいのですが、 おわかりの方がいらっしゃいましたらご教授いただければ幸いです。 例) シート「aaa」のD4セルに「ccc」と入力して実行すると、 シート「ccc」のF7セルに「=SUM(F5:F6)」の数式を入力するマクロを作成したい。 (シート「aaa」のD4セルに「ddd」と入力して実行すると、 同様に、シート「ddd」のF7セルに数式をマクロで入力したい)

  • エクセルのセルの値をシート名にするマクロ

    エクセルで、例えばB2セルに入力された数字を使って自動でシート名にしたいのですが、(=そのセルの値が変更されたときに 自動的に シート名が変更されるマクロ )どうやったらよいのか良くわかりません。また、重複するシート名があった場合にはアラートを表示させたいです。 例: 1.B2セルに10と入力する 2.もしシート名に重複が無ければ、シート名が自動的に「10月」になり、アクティブセルはB2に戻って復帰する。 3.重複がある場合は「シート名に重複があります」等のアラートを表示して終了する 多分 イベントとかいうものが絡んでくるのでしょうが、マクロは時々使うのですが、いつも記録したものを手直しする程度なので、標準モジュールの部分しか触った事がありません。 どなたか教えてください。お願いします。

  • セルの値をワークシート名にする(エクセル2013)

    インストラクターのネタ帳さんより http://www.relief.jp/itnote/archives/003382.php 下記「セルの値をワークシート名にする?Worksheet_Change」 を拝借し利用させていただこうと思いましたが ---------------------- Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "H1" Then ActiveSheet.Name = Range("H1").Value End If Exit Sub ERR_HANDLER: MsgBox "現在のH1セルの値はシート名にできません。" End Sub ---------------------- はそのまま出来るのですが、 H1セルにデータの入力規則:リストを指定しますと エラーとなりシート名が変わりません sheet1のリストA1:A50をsheet2のH1セルにリスト表示させ その表示名をそのままシート名に出来ませんでしょうか? ---------------------- Sub copy Range("H1").Copy Range("P1") End Sub ---------------------- Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo ERR_HANDLER If Target.Address(False, False) = "P1" Then ActiveSheet.Name = Range("P1").Value End If Exit Sub ERR_HANDLER: MsgBox "現在のP41セルの値はシート名にできません。" End Sub ---------------------- としてH1のセルをP1にコピーしたものを指定して試しましたがやはりエラーとなり うまくいきませんでした。 全くの素人で恐縮ですがよろしくお願いいたします

  • Excel VBA ワークシートに貼られたボタン名(Caption)をセルの値から取得するには

    ご教授お願いいたします。 Excel2002のワークシート上にボタンを配置しています。 セル(例えばA6)の値を取得して,配置しているボタン名にすることはできますでしょうか。 初歩的な質問だと思うのですが,よろしくお願いいたします。

  • Excelのワークシート内の二つのシートのセルの値(文字列)を共有する

    Excelのワークシート内の二つのシートのセルの値(文字列)を共有する方法を教えて下さい。 具体的には、ワークシート内に|31日|30日|・・・|2日|1日|7月|とタブがあります。 7月のシートのA1が1(日付)のとき、B1にあらかじめ入力した1日のシートのB1(文字列)を 表示させる方法があるのでしょうか。 7月のB1セルに直接=1日!B1と入力すると出来たのですがこれだとA1が28(日付)の時も1日のB1を表示させてしまいうまくいきません。 7月のシートA1の値28(日付)の時に28日のシートのB1、A1の値11(日付)の時は11日のシートのB1を表示という具合にしたいのですが初心者なのでうまくできません。 どなたか詳しく教えていただけませんか。 宜しくお願い致します。

専門家に質問してみよう