|
▼SS様
返信ありがとうございます
なるほど。シート用をあらかじめ作っておいて
それが対応したシートであれば、必要に応じて呼び出す
といった感じでしょうか?(せっかく書いていただいてるのに、まだよく理解できてなくてすみませんorz)
ご助言ありがとうございます!
早速今の仕事が終わりましたら、組み込んで動作を一つ一つ追って確認をしていきたいと思います
ありがとうございました!
>▼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
|
|