- ベストアンサー
VBAでシート名をセルから取得したいのですが
データシートが数枚あり、そこから、シートごとに必要なデータのみ抽出して、印刷用シート(1枚)にまとめて書きこみたいと思っています。 書きこみは以下のような感じにしています。 Sheets("印刷用シート").Activate Range("A1").Value = Sheets("データ1").Range("A1").Value ここで、データ1というシート名を、色々に変えたいのです。 印刷用シートのセルに「データ1」なり「データ2」なり入力したら、その部分が変わるように変数にしたいのですが、どのようにすればいいでしょうか? VBAを勉強中(初心者)です。よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
変数宣言して行えばできますよ。 例えば Dim ファイル保存名 ファイル保存名 = "C:\Documents and Settings\Administrator\シート名.xls" こんな感じですかね。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17070)
>データ1というシート名を、色々に変えたいのです と言う質問でありながら、既回答にはNameが出て来ないですが良いんですか。 名前の変更は、 Worksheets("印刷用シート").Name = Range("A1") のようできます。 A1に何かシート名を入れるなら Sub test01() Range("A1") = InputBox("シート名=") ActiveSheet.Name = Range("A1") End Sub
- jindon
- ベストアンサー率43% (50/116)
#3 jindonです。 訂正 sheet3はもちろん 印刷用 ですね。
- diashun
- ベストアンサー率38% (94/244)
#2 diashun です。 修正です。 Range("A1").Value = Sheets(strSheetName).Range("A1").Valueを ↓に修正 ThisWorkbook.Sheets("印刷用シート").Range("A1").Value = ThisWorkbook.Sheets(strSheetName).Range("A1").Value
お礼
たびたびありがとうございます。単純な置き換えのはずなのにと悩んでいました。これだとActiveSheetがどこであれ実行できるわけですね。
- jindon
- ベストアンサー率43% (50/116)
単純に Dim a As String a = Sheets("sheet3").Range("任意のセル番地").Value Sheets("sheet3").Range("a1").Value = Sheets(a).Range("a1").Value
お礼
ありがとうございます。セルから読みこんで置きかえるというのが簡潔にできました。
- diashun
- ベストアンサー率38% (94/244)
diashun です。 「inputbox」を使ってみては? '******************************************** dim strSheetName as String strSheetName = InputBox("シート名を入力して下さい") Range("A1").Value = Sheets(strSheetName).Range("A1").Value '******************************************** 上記を追加し「InputBox」ダイアログにシート名を入力すると、そのシート名の指定のセルの値が設定されます。
お礼
ありがとうございます。この通りにしたらできました。Stringだったのですね。勉強になりました!
補足
早速の回答ありがとうございます。ええと、ひとつのシート内で作業していまして、あるセルに入力したシート名を取得して、そのシートからデータをひっぱってきたいのです。 Dim AAA As Worksheet Set AAA = ActiveSheet AAA.Value = "a1" 'このセルにシート名を入れる Sheets("AAA").Activate Range("c5").Value = Sheets("AAA").Range("c5").Value というようにしたらエラーになってしまうので…。