• ベストアンサー

VBAでシート名をセルから取得したいのですが

データシートが数枚あり、そこから、シートごとに必要なデータのみ抽出して、印刷用シート(1枚)にまとめて書きこみたいと思っています。 書きこみは以下のような感じにしています。 Sheets("印刷用シート").Activate Range("A1").Value = Sheets("データ1").Range("A1").Value ここで、データ1というシート名を、色々に変えたいのです。 印刷用シートのセルに「データ1」なり「データ2」なり入力したら、その部分が変わるように変数にしたいのですが、どのようにすればいいでしょうか? VBAを勉強中(初心者)です。よろしくお願いします。

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

  • ベストアンサー
  • daitai126
  • ベストアンサー率29% (59/201)
回答No.1

変数宣言して行えばできますよ。 例えば Dim ファイル保存名 ファイル保存名 = "C:\Documents and Settings\Administrator\シート名.xls" こんな感じですかね。

mariboh
質問者

補足

早速の回答ありがとうございます。ええと、ひとつのシート内で作業していまして、あるセルに入力したシート名を取得して、そのシートからデータをひっぱってきたいのです。 Dim AAA As Worksheet Set AAA = ActiveSheet AAA.Value = "a1" 'このセルにシート名を入れる Sheets("AAA").Activate Range("c5").Value = Sheets("AAA").Range("c5").Value というようにしたらエラーになってしまうので…。

その他の回答 (5)

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

>データ1というシート名を、色々に変えたいのです と言う質問でありながら、既回答にはNameが出て来ないですが良いんですか。 名前の変更は、 Worksheets("印刷用シート").Name = Range("A1") のようできます。 A1に何かシート名を入れるなら Sub test01() Range("A1") = InputBox("シート名=") ActiveSheet.Name = Range("A1") End Sub

  • jindon
  • ベストアンサー率43% (50/116)
回答No.5

#3 jindonです。 訂正 sheet3はもちろん 印刷用 ですね。

  • diashun
  • ベストアンサー率38% (94/244)
回答No.4

#2 diashun です。 修正です。 Range("A1").Value = Sheets(strSheetName).Range("A1").Valueを ↓に修正 ThisWorkbook.Sheets("印刷用シート").Range("A1").Value = ThisWorkbook.Sheets(strSheetName).Range("A1").Value

mariboh
質問者

お礼

たびたびありがとうございます。単純な置き換えのはずなのにと悩んでいました。これだとActiveSheetがどこであれ実行できるわけですね。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.3

単純に Dim a As String a = Sheets("sheet3").Range("任意のセル番地").Value Sheets("sheet3").Range("a1").Value = Sheets(a).Range("a1").Value

mariboh
質問者

お礼

ありがとうございます。セルから読みこんで置きかえるというのが簡潔にできました。

  • diashun
  • ベストアンサー率38% (94/244)
回答No.2

diashun です。 「inputbox」を使ってみては? '******************************************** dim strSheetName as String strSheetName = InputBox("シート名を入力して下さい") Range("A1").Value = Sheets(strSheetName).Range("A1").Value '******************************************** 上記を追加し「InputBox」ダイアログにシート名を入力すると、そのシート名の指定のセルの値が設定されます。

mariboh
質問者

お礼

ありがとうございます。この通りにしたらできました。Stringだったのですね。勉強になりました!