|
▼Ex初心者 さん:
こんにちは
sub_samplepleに少し追記してtestから呼び出す方法を作ってみました。
sub_samplepleは特定シートを対象にしていたのでWorkSheet指定していなかったのをFor Eachで取得したmySheetが反映されるようにしました。
変数名は適当なものが思いつかなかったので好きなように置き換えて下さい。
まとめ用のシートの行入れ替えがされないようにする必要があります。
今回は一つにまとめても良いのかも知れませんが、シート種類による処理の手法が複数になる場合を考慮すると呼び出す形のが便利かなと考えました。
Sub test()
Dim mySheet As Worksheet
For Each mySheet In Worksheets
If mySheet.Name = "まとめシート" Then
MsgBox "処理を飛ばします"
Else
Call sub_sampleple(mySheet)
End If
Next mySheet
End Sub
Sub sub_sampleple(MS As Worksheet)
Dim myB2 As Integer
Dim myMOVE As Boolean
Dim myRow As Long
Dim myRowMax As Long
Dim myCnt As Long
'第一条件の判定
Select Case MS.Range("B2").Value
Case "あ", "い", "う"
myB2 = 1
Case "え", "お"
myB2 = 2
End Select
myRow = 3 'B3から
myRowMax = 20 'B20までをチェック
Do
'第二条件の判定
Select Case MS.Cells(myRow, 2).Value
Case 1, 11, 20
myMOVE = (myB2 = 1)
Case 50, 100
myMOVE = (myB2 = 2)
Case Else
myMOVE = False
End Select
'移動処理
If myMOVE Then
MS.Rows(myRow).Cut
MS.Rows(30 + myCnt).Insert Shift:=xlDown '30行目に挿入
MS.Rows(30 - 1).Insert Shift:=xlDown
myCnt = myCnt + 1
myRowMax = myRowMax - 1
Else
myRow = myRow + 1
End If
Loop Until myRow > myRowMax
End Sub
>▼SS さん:
>>▼Ex初心者 さん:
>>こんにちは、初めての機能を使うときはそれ単独で動作確認をすると
>>良く内容が理解できると思います。Msgboxの利用が有効かも
>>新しいBOOKの標準モジュールに以下のマクロを貼り付け実行してから
>>各シートのA1セルを確認してみてください。
>>Sub test()
>> Dim mySheet As Worksheet
>> For Each mySheet In Worksheets
>>'>〜
>>'>内
>> mySheet.Range("A1").Value = mySheet.Name
>>'>容
>>'>〜
>> Next mySheet
>>End Sub
>
>SS様
>
>ご返答+アドバイスありがとうございます!
>動作確認についてはデバックで追いかけてみたりしつつどういう動作をするのかを随時確認しながらやっている状態です
>
>?な部分は調べつつで、わからないことも多いですが・・・
>
>助言ありがとうございました!
|
|