• 締切済み

別シートへの移動

任意の番号別に名前を付けた複数のシートとそれらを集計するシートが有ります。複数のシート名は以下のように取得しています。 mySheetCnt = ThisWorkbook.Sheets.Count For i = 2 To mySheetCnt  mySheetNam = Sheets(i).Name  Sheets(mySheetNam).Select  Worksheets(mySheetNam).Range("d6").Select  ・ Next i それぞれのシートで集計した結果をシート名”個人時間集計”のセルA5に書込み、その後"Next i"のシートに移って同じように集計させ、また結果をシート名”個人時間集計”に書込む。この処理を繰り返したいと思います。 質問は 1 "シート名”個人時間集計”のセルA5"の指定方法 2 その後"Next i"のシートに移って・・ 以上がどうしてもうまくいきません。どなたか教えて下さい。

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

#4です #4ではエラーが出ますね すいません、野球が気になって・・・ #3さんのが正解です ごめんなさい

tomy3160
質問者

お礼

いろいろお世話になりました。 やっとシート移動が出来ました。 Worksheets("個人時間集計").Select Range("A5").Select を Sheets("個人時間集計").Select Worksheets("個人時間集計").select Range("A1").Select と書き直したらなぜか出来るようになりました。 本当にありがとうございます。

tomy3160
質問者

補足

お礼が遅くなりました。 私も始めは教えて頂いたコードでやって見たのです。しかしうまくいかなかったのです。今回シート名を取得する方法を使ったのは初めてで何か特別なシート移動方法やセル取得が有るのかなと思って質問致しました。これから問題の部分だけを抜き出してやってみます。ありがとうございました。暫くしたらまた質問します。懲りずに教えて下さい。 PS:野球優勝良かった

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

処理の流れが、今一つ掴めないのですが >そこで基準となる("A5")をActivecellとして指定したいのです。 Worksheets("個人時間集計").Range("A5").Activate で、指定できます

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#1です。 >1 "シート名”個人時間集計”のセルA5"の指定方法 なら Worksheets("個人時間集計").Select Range("A5").Select ですけど。 ただやりたい事に対してコード全体がわからないので、どこに入れるというのもわからないです。 それにSelectをするという事自体ほぼ皆無なので。

tomy3160
質問者

お礼

いろいろお世話になりました。 やっとシート移動が出来ました。 Worksheets("個人時間集計").Select Range("A5").Select を Sheets("個人時間集計").Select Worksheets("個人時間集計").select Range("A1").Select と書き直したらなぜか出来るようになりました。 本当にありがとうございます。

tomy3160
質問者

補足

お礼が遅くなりました。 私も始めは教えて頂いたコードでやって見たのです。しかしうまくいかなかったのです。今回シート名を取得する方法を使ったのは初めてで何か特別なシート移動方法やセル取得が有るのかなと思って質問致しました。これから問題の部分だけを抜き出してやってみます。ありがとうございました。暫くしたらまた質問します。懲りずに教えて下さい。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

書き込みの条件が無いようですが 条件は#1さんと同じです Sub test() Dim mySheetCnt As Integer Dim mySheetNam As String Dim i As Integer mySheetCnt = ThisWorkbook.Worksheets.Count For i = 2 To mySheetCnt mySheetNam = Worksheets(i).Name Worksheets("個人時間集計").Range("a" & i + 3).Value = Worksheets(mySheetNam).Range("d6").Value Next i End Sub VBAの理解が深まればと思い、質問のコードを修正・追加してみました 参考までに

tomy3160
質問者

お礼

迅速なご回答ありがとうございました。 どうやらシート名取得はhige_082さんの以前の回答を参照していたようです。さて質問内容に不足がありました。詳しくはn-junへのお礼で記載しています。引き続きご指導お願い致します。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>"シート名”個人時間集計”のセルA5"の指定方法 A5の次は下に書き込んでいくと仮定すると、 Sub try() Dim ws As Worksheet Dim r As Range Set r = Worksheets("個人時間集計").Range("A5") For Each ws In Worksheets If ws.Name <> "個人時間集計" Then ws.Range("D6").Copy r Set r = r.Offset(1) End If Next Set r = Nothing End Sub こんなとか?

tomy3160
質問者

お礼

迅速なご回答ありがとうございました。 私の質問不足が有りました。集計する各シートには縦に作業名、横には4列1ブロックで日にち(例3月24日)を指定しています。これが日にち別に数ブロックあります。その中に色別で作業者の作業時間を記載しています。また幾つかのシートに同一作業日が存在します。 集計結果を記載する"個人時間集計”シートは縦は日付、横に作業者名の項目になっています。 "個人時間集計”シートで縦側の日付を検索、作業者名をを指定するのにActiveCell.Offsetを使っています(これは出来ました)。そこで基準となる("A5")をActivecellとして指定したいのです。どうぞよろしくお願い致します。

関連するQ&A