VBA의 기본 조작(응용 2)

4550 단어 VBA
이번은 VBA의 기본 조작(응용 1)의 계속이 됩니다. 그럼 가자!

우선은 전회 작성한 매크로를 버튼으로 동작할 수 있도록 해 봅니다.

사진과 같이 [개발]→[삽입]→[폼 컨트롤]을 열고 맨 왼쪽 상단의 사각형 버튼을 클릭합니다.

방금 만든 프로시저 이름을 선택하고 확인을 클릭합니다.
그리고 커서를 드래그 앤 드롭으로 버튼의 크기를 결정합니다.

사진처럼 버튼이 생기면 완료입니다. 시험에 추출한 데이터를 삭제해 보고 버튼에 의한 동작 확인을 해 봅시다!

총액과 주문서당 평균액 산출
Sub test2()
    Cells(1, 8) = "総合計"
    Cells(1, 9) = "総平均"

    Dim i
    Dim endRow
    S = 0 '注文の総額
    ctrRow = 1

  '最終行を取得する
    endRow = Range("A2").End(xlDown).Row

  '注文額の入力されているセルの範囲
    For i = 1 To endRow
        S = S + Cells(i + 1, 7)
    Next i

  'すべての注文書の総額の入力
    Cells(2, 8) = S

  '一つの注文書あたり平均額
    Cells(2, 9) = S / endRow

  '金額表示の整理
    Cells(2, 8).NumberFormatLocal = "#,###"
    Cells(2, 9).NumberFormatLocal = "#,###.##"
End Sub

이 과정에서 End(xlDown).Row 를 사용하고 있지만 데이터 그룹의 마지막 행을 얻을 수 있습니다. [Ctrl]+[▽]를 이미지해 주시면 알기 쉬울까 생각합니다.

평균값 이하의 데이터를 적색 채우기
Sub test3()
    Dim i
    endRow = Range("A2").End(xlDown).Row  '最終行を取得する

  '注文額のセルの範囲
    For i = 1 To endRow

    '注文額の列にあるセルが「空白」の場合
        If Cells(i + 1, 7) = "" Then

      '何もしない
            Exit Sub

    'セルが「空白」でない場合
        Else

       'セルの値が平均額より低い場合
            If Cells(i + 1, 7) < Cells(2, 9) Then

         'セルを赤くする
                Range(Cells(i + 1, 1), Cells(i + 1, 7)).Interior.Color = RGB(250, 0, 0)

            End If
        End If
    Next i
End Sub

최대 소계 데이터를 파란색으로 채우기
Sub test4()
    S = 0  '最大小計

   '最終行を取得する
    endRow = Range("A2").End(xlDown).Row

  '注文額が入力されている範囲
    For i = 1 To endRow

     'もしS(最大小計)よりセルの値が大きい場合
        If S < Cells(i + 1, 5) Then 

       'S(最大小計)の値を更新する(セルの値を入れる)
            S = Cells(i + 1, 5)

        End If
    Next i

    For i = 1 To endRow

    'S(最大小計)のセルの位置において
        If Cells(i + 1, 5) = S Then

      '特定の範囲のセルを青くする
           Range(Cells(i + 1, 1), Cells(i + 1, 7)).Interior.Color = RGB(0, 0, 250)
        End If
    Next i
End Sub

회사명으로 정렬
Sub test5()
   '最終行を取得する
    endRow = Range("A2").End(xlDown).Row 

  '特定の範囲でソート関数(整列させる)を使用する
    Call Range(Cells(2, 1), Cells(endRow, 7)).Sort(Key1:=Cells(2, 3), Order1:=xlAscending)
End Sub
Range(Cells(2, 1), Cells(endRow, 7)) 의 부분에서 이번 정렬하고 싶은 데이터군의 범위를 모두 호출하는 곳에 주의해 주세요.

평균 금액 이하의 주문 데이터를 추출 시트에 복사
Sub test6()
    '抽出用のワークシートを作成する
    Worksheets.Add After:=ActiveSheet
    Sheets(2).Select
    ActiveSheet.Name = "抽出"
    Sheets(1).Select

    '項目の表示
    Worksheets("抽出").Range("A1") = "発注番号"
    Worksheets("抽出").Range("B1") = "発注者"
    Worksheets("抽出").Range("C1") = "発注先"
    Worksheets("抽出").Range("D1") = "小計最大品名"
    Worksheets("抽出").Range("E1") = "小計最大価格"
    Worksheets("抽出").Range("F1") = "数量合計"
    Worksheets("抽出").Range("G1") = "金額合計"

    Dim i
    j = 1
    endRow = Range("A2").End(xlDown).Row  '最終行を取得する

        '平均額以下の注文データを抽出シートにコピーする
        For i = 1 To endRow
            If Worksheets(1).Cells(i + 1, 7) < Cells(2, 9) Then
                Worksheets(1).Cells(i + 1, 7).EntireRow.Copy
                Worksheets("抽出").Cells(j + 1, 1).PasteSpecial xlPasteFormulasAndNumberFormats
                j = j + 1
            End If
        Next i

        '余計なデータを削除する
        Worksheets("抽出").Cells(2, 8).ClearContents
        Worksheets("抽出").Cells(2, 9).ClearContents
End Sub

이상으로 VBA의 기본 조작의 해설을 종료합니다. 어땠습니까? 한 번에 이해하는 것은 어려울 수 있지만 몇 번이나 시도하거나 코드의 일부를 변경하여 동작을 확인해 보면 더 이해가 깊어진다고 생각합니다.

VBA에 한정하지 않고 모든 언어로 말할 수 있는 것입니다만, 내용을 완벽하게 이해하려고 하면 습득까지 엄청나게 시간이 걸리므로, 필요에 따라서 조사해 만들고 싶은 것이 만들 수 있는 것이 가장 중요합니다. 그리고 이번 기사를 계기로 프로그래밍의 즐거움을 조금이라도 알고 받으면 다행입니다.

좋은 웹페이지 즐겨찾기