- ベストアンサー
EXCELのワークシート名とセルの値の取得に付いて
EXCEL2000を使用しておりますが、ワークシート名と、そのシート内の複数のセルの値を取得し、別シートにマトリックス表示出来るように 入力フォームを設計したいのですが、固定の名称を予め組み込むのではなくフォーム上で入力したテキストをワークシート名及び、セルの位置として扱えるようにするのには、どのようなマクロを書けばよいでしょうか?例えばシート名A~Fの各シートのA1~F1のセルに10~15の数値が 入っていて、Gのシートでマクロを動かすと、シート名とセルの位置を 入力するフォームが現れ、それぞれ入力すると、指定されたシート名と セルの中の値が、Gシートに、1行ずつ追加されて行く処理をイメージ しています。何卒、宜しくご指導の程、お願いいたします。
- みんなの回答 (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行)を調べていく訓練をしないと。 質問文が、したいことの羅列で流れている感じ。
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7417/18945)
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 はフォームのテキストボックス名として、ボタンを押した時に、 上記のマクロが走るようにするとか?
お礼
ありがとうごさいました。まだまだ不勉強なもので、市販の参考資料などを読んでも、どう対処してよいものか、こまっておりました。早速 試させて頂きます。ありがとうございました。これからも宜しくお願いします。
お礼
早速のご回答ありがとうございました。場にも慣れていないもので 勝手な質問の仕方で申し訳ありません。色々と大変参考になりました。 ありがとうごさいます。これからも宜しくお願い致します。