投稿/コメントを表示します。

今回始めから自力で復習もかね記憶をたどり書いてみました。ちゃんと動くのですが、回答と比べてみると、スマートでなく、修正が発生した場合、大変であると思いました。回答の考え方・書き方をどんどん吸収していきたいです。
回答の変数の書き方について、興味があり質問なのですが、ハンガリアン記法でlnやshとつけていることは読み取れ、またToは記載先シートを意味するためそのように記載しているのかな?と読み取ったのですが、Fmはどういう意味で設定されているのですか?ちょっとした疑問です。もしよろしければ教えてください。
Sub dai5yosyuu()
    sakuzyo
    Dim lnM As Long
    Dim lnMMx As Long
    Dim st As String
    Dim shM As Worksheet
    Dim shTo As Worksheet
    Dim gyo As Long
    Dim d As Date
    Set shM = Worksheets("main")
    lnMMx = shM.Range("B" & Rows.Count).End(xlUp).Row
    For lnM = 2 To lnMMx
        If shM.Range("B" & lnM).Value <> shM.Range("B" & lnM - 1).Value Then
            gyo = 16
            st = shM.Range("B" & lnM).Value
            Sheets("main1").Copy after:=Sheets(2)
            Set shTo = ActiveSheet
            shTo.Name = st
            shTo.Range("H" & gyo).Value = shM.Range("F" & lnM).Value
            shTo.Range("E" & gyo).Value = shM.Range("D" & lnM).Value
            shTo.Range("F" & gyo).Value = shM.Range("E" & lnM).Value
            shTo.Range("B" & gyo).Value = Right(Year(d), 2)
            shTo.Range("C" & gyo).Value = Month(d)
            shTo.Range("D" & gyo).Value = Day(d)
            If shM.Range("G" & lnM).Value > 0 Then
                shTo.Range("I" & gyo).Value = shM.Range("G" & lnM).Value
            Else
                shTo.Range("J" & gyo).Value = shM.Range("G" & lnM).Value
            End If
            
        ElseIf shM.Range("B" & lnM).Value = shM.Range("B" & lnM - 1).Value Then
            gyo = gyo + 1
            shTo.Range("H" & gyo).Value = shM.Range("F" & lnM).Value
            shTo.Range("E" & gyo).Value = shM.Range("D" & lnM).Value
            shTo.Range("F" & gyo).Value = shM.Range("E" & lnM).Value
            d = shM.Range("C" & lnM).Value
            shTo.Range("B" & gyo).Value = Right(Year(d), 2)
            shTo.Range("C" & gyo).Value = Month(d)
            shTo.Range("D" & gyo).Value = Day(d)
            If shM.Range("G" & lnM).Value > 0 Then
                shTo.Range("I" & gyo).Value = shM.Range("G" & lnM).Value
            Else
                shTo.Range("J" & gyo).Value = shM.Range("G" & lnM).Value
            End If
        End If
    Next

End Sub

2020/04/06 01:10