見出し画像

【Excel】複数シート間の転記はシートを宣言する(速読VBA単語Program3-5)

今回は、シート2枚にまたがる転記をします。シートを指定すると、コードにSheets()、Sheets()・・・とたくさんのSheets()が登場するため、短めの変数に置き換えたほうが分かりやすくなります。

RangeやSheetsを省略して書く方法のほか、連続回数のカウント、Exit For、ElseIf、空白の連続回数のカウントなど盛りだくさんの内容となっております。前回のProgram3-4とあわせてIfの使い方をマスターすることができます。

目次

1.連続回数の数え方
(1)連続をかぞえる
(2)最大値を保存する
(3)最高記録の場所を保存する
2.Set
3.Setした場合は宣言をしたほうがよい
(1)Setは省略記法である
(2)Setした場合としない場合の違い
(3)Dim~As Range
4.Dim~As Worksheet
5.補足:VBAコードの美しさについて
6.応用事例
(1)Exit For
(2)ElseIf~Then
7.補足:IfとElseIfの違い
8.行数を数える方法
(1)空白を探すこと
(2)途中に空白があるかもしれない
(3)1000人以上だったらどうするか
9.章末テスト(長文読解問題)

Program3-5の最終目標

Program3-5では、おもに次のようなことができるようになります。
・1000行以内のリストであることがあらかじめわかっていて、途中に何個か空白があってもリストの最終行を探す
・シート間の転記をする際にSheets()を省略できる
・連続回数の最大値を変数に保存できる

目次の最後にある長文読解の問題文をここに示します。

Sub VBA3_5()
   Dim ws1 As Worksheet, ws2 As Worksheet
   Set ws1 = Sheets(1)
   Set ws2 = Sheets(2)
   KijunGokaku = 7
   KijunHoketsu = 5
   ws2.Range("A:E").ClearContents
   ws2.Range("A1") = "合格者No"
   ws2.Range("B1") = "得点"
   ws2.Range("D1") = "補欠No"
   ws2.Range("E1") = "得点"
   spacecnt = 0
   For i = 2 To 1000
       If ws1.Cells(i, 1) = "" Then
           spacecnt = spacecnt + 1
           If spacecnt = 1 Then lastrow = i - 1
           If spacecnt > 100 Then Exit For
       Else
           spacecnt = 0
       End If
   Next
   cnt1 = 0
   cnt2 = 0
   For i = 2 To lastrow
       jukenno = ws1.Cells(i, 1)
       tokuten = ws1.Cells(i, 2)
       If tokuten >= KijunGokaku Then
           cnt1 = cnt1 + 1
           ws2.Cells(cnt1 + 1, 1) = jukenno
           ws2.Cells(cnt1 + 1, 2) = tokuten
       ElseIf tokuten >= KijunHoketsu Then
           cnt2 = cnt2 + 1
           ws2.Cells(cnt2 + 1, 4) = jukenno
           ws2.Cells(cnt2 + 1, 5) = tokuten
       End If
   Next
   Debug.Print "spacecnt=" & spacecnt
End Sub

練習問題(無料)

速読VBA単語Program3-5までを出題範囲とする練習問題を無料で公開しています。

注意事項

「速読VBA単語」は、文法を完全に無視して、難易度順に単語練習をするだけでExcelVBAを習得しようという「邪道」な企画です。本講座は、極めて強い副作用があり安全上注意が必要です。この説明書は本講座を正しく受講するための説明文書です。受講する前に必ずお読みください。

無料ゾーンご案内

速読VBA単語Program1-1, Program1-2, Program2-1は無料で公開しております。ぜひご覧ください。

また、WordやExcel(マクロ以外)の記事はすべて無料で公開しております。

0.実験用Excelファイルの準備

まずは、今回のプログラムで使用するExcelファイルを作ります。

1枚目のシート
・セルA1「JukenNo」
・セルA2:A101「A001~A100」
・セルB1「Point」
・セルB2:B101は、1~10の間の整数でランダムでよいです

なお、ランダムの数値は「=Int(Rand()*10)+1」という数式を使えば良いですが、数式を使った場合は値の貼り付けをして数式を消しておいてください。
2枚目のシート(新規)を用意しておきます。


ここから先は

12,988字 / 8画像

¥ 500

この記事が気に入ったらサポートをしてみませんか?