
初心者で教えて頂きながら、ここまできましたが、困ってしまいました。すみません。
この統合のマクロのシートに01~40のシートがあるとした場合。しかし、これ以外にも他にシートもある場合にシート名の文言にの前にこの01~40数字のあるものだけを統合することは可能だとわかったような気がします。下記の判定により、しかし、それをどのように生かすか試行錯誤しますがうまくいきませんので、どのように変えればよいのかを教えて頂けませんか。よろしくお願いします。
なお、この01~40は、現在01~05まででこれから増えていくことになります。「Sub 統合()」については、不要なシート以外の私がほしいデーターはとれていますが、私としては必要とする以外のデーターまでついて来てしまうので、どうにかならないかと思う次第です。
Sub 統合()
Dim I As Long
Dim r As Long
Dim s As Long
Dim Sh As Worksheet
Dim MaxRow As Long
Dim MaxCol As Long
Dim MyArray As Variant
Dim JoinSh As Worksheet
Set JoinSh = Worksheets("統合") '統合シートを変数に格納
JoinSh.Cells.Delete 'すでに統合シートが存在する場合は一旦セルを削除
s = 1 '最大行を超えた場合次の統合シートを作成するための番号
For I = s + 1 To Worksheets.Count 'シートを統合シートの次~末尾までループ
With Worksheets(I) '各月シート
If I = 1 Then
r = 1 '最初だけ項目も取得
Else
r = 3 '最初以外は2行目から取得
End If
MaxRow = .Cells(Rows.Count, 10).End(xlUp).Row '10列目で最終行を取得
MaxCol = .Cells(1, Columns.Count).End(xlToLeft).Column '1行目で最終列を取得
MyArray = Range(.Cells(r, 10), .Cells(MaxRow, MaxCol)) 'A1~データ末尾まで配列に格納
End With
With JoinSh '統合シート
MaxRow = .Cells(Rows.Count, 10).End(xlUp).Row '統合シートの10列目で最終行取得
If MaxRow + UBound(MyArray) > Rows.Count Then '最大行を超える場合の処理
s = s + 1 '統合シートの番号を加算
Worksheets.Add Before:=Worksheets(s) '新規に統合シートを追加
ActiveSheet.Name = "統合" & s '名前が同じにならないように番号を追加
Set JoinSh = ActiveSheet '統合シートを変数に格納
MaxRow = JoinSh.Cells(Rows.Count, 10).End(xlUp).Row '統合シートの10列目で最終行取得
End If
If .Cells(1, 1) = "" Then
'最初だけ1行目から貼り付け
Range(.Cells(1, 1), .Cells(UBound(MyArray), MaxCol)) = MyArray
Else
'最初以外は最終行の次に貼り付け
Range(.Cells(MaxRow + 1, 1), .Cells(MaxRow + UBound(MyArray), MaxCol)) = MyArray
End If
End With
Next I
End Sub
更に、
シート名の文言にの前にこの01~40数字のあるものだけ、例えば以下のように判定すればよいとおもいます。というアドバイスを貰ってやってみました。判定はできましたが、今後どのように進めればよいか正直わからない状態です。
Sub 研究用()
Dim SH As Worksheet
Dim buf As String
For Each SH In Worksheets
buf = Left(SH.Name, 2)
If IsNumeric(buf) Then
Select Case buf * 1
Case 1 To 40
MsgBox SH.Name & " は対象シートです"
Case Else
MsgBox SH.Name & " は対象シートではありません"
End Select
Else
MsgBox SH.Name & " は対象シートではありません"
End If
Next SH
End Sub
No.1ベストアンサー
- 回答日時:
こんばんは
>判定はできましたが、今後どのように進めればよいか正直わからない状態です。
判定ができているのなら、表示する代わりにそのシートに対して目的の処理を行えばよいのではないでしょうか?
具体的には、MsgBoxを出す代わりに、実際の処理の記述を行えばよいです。
直接記述すると、全体構成がわかりにくくなってしまうようであるなら、元の処理を「シートを受け取ってそのシートに対して処理する」サブルーチンにしておいて、そちらを呼び出すようにするとか。
Case 1 To 40
MsgBox SH.Name & " は対象シートです"
↓ ↓ ↓
Case 1 To 40
Call 作成したサブルーチン(SH)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
【Excel VBA】マクロボタンを表のスクロールやフィルタに左右されず固定できないですか?
Excel(エクセル)
-
VBAでtxtファイルを読み込む際にtabを認識したい
Visual Basic(VBA)
-
エクセルについて vlookup関数で表にない数字を打つとエラーになる関数教えて
Excel(エクセル)
-
4
サブフォルダ含むすべてのフォルダの Excel 検索
Visual Basic(VBA)
-
5
揮発性関数の語源・由来は何ですか?
Excel(エクセル)
-
6
Excelで 複数のセル内のどれかに数字を入力すると その数字が表してる文字が出るような方法ってあり
Excel(エクセル)
-
7
Excel エクセルってなんですか? なぜ人気があるのかも教えてください
Excel(エクセル)
-
8
excelにテキストファイルの指定行のみを書き出したい
Visual Basic(VBA)
-
9
WordはそれなりにできるけどExcelが苦手すぎて全くできない人の対処法
Excel(エクセル)
-
10
excel2021で実行できないマクロ。どこを直したらいいのか
Visual Basic(VBA)
-
11
Excelで置換を行う場合[検索と置換]ダイアログボックスから置換を行って おりますが、例えば
Excel(エクセル)
-
12
Excel 行高さと列幅について
Excel(エクセル)
-
13
どちらからも検索して一覧表を作成できるエクセル表を作りたい
Excel(エクセル)
-
14
Excel 【データの加工】
Excel(エクセル)
-
15
元データから連続5日以上だった人を抽出したい
Excel(エクセル)
-
16
マクロを修正できないものか、統合シートについて
Excel(エクセル)
-
17
Excel教えてほしいです。
Excel(エクセル)
-
18
Excel VABについて 1.xlsm、VBA.xlsm2つのファイルがあり、1.xlsmにてVB
Visual Basic(VBA)
-
19
EXCELの動作を早くする方法
Excel(エクセル)
-
20
マクロ作成で困っています。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
原付 レッツシート開け方
-
5
マグネットシートって・・・
-
6
BRIDEのシート張り替えってでき...
-
7
リアシート無しで運転してたら...
-
8
SRシートを流用(CB400SS)
-
9
ExcelのVBAコードについて教え...
-
10
エクセルでリストから品名を選...
-
11
ホンダ・レブルのシートのはずし方
-
12
基礎工事の防湿シートと捨てコ...
-
13
Excel VBA シート名変更時、重...
-
14
水の染み込んだバイクのシート...
-
15
ホンダジョルノのイス シート...
-
16
PET(ポリエチレンテレフタレー...
-
17
テントのグラウンドシートの自作
-
18
車のシートでおもらし
-
19
何方か知恵をください… 下記の...
-
20
ハイエースの2ndシート交換を...
おすすめ情報
公式facebook
公式twitter