なずなず VBA教習所~初級:転記の準備~

おつかれさまです。なずなです。

今回は少しコードの書き方を変えてみました。
初心者の頃は返ってこういう方が覚えやすかった記憶です。

だ、だれかっ 感想あったらおしえてね!!

今回もコードだけ並べます。
解説は気力が出たらやってみま~す。


1. 九九入力

Sub 九九入力()
   Dim sh As Worksheet
   
   Set sh = ThisWorkbook.Worksheets("Sheet1")
   
   Dim i As Long
   Dim k As Long
   
   
   sh.Range(sh.Cells(1, 1), sh.Cells(20, 20)).Clear
   
   For i = 1 To 9
       For k = 1 To 9
           sh.Cells(i, k).Value = i * k
       Next
   Next
End Sub


2. シート作成

   Dim 追加シート As Worksheet
   
   If Worksheets.Count < 3 Then
   
       Set 追加シート = Worksheets.Add
On Error Resume Next
       追加シート.Name = "書き込み"
   
   End If


3. ダイレクト

Sub ダイレクト()
   Dim 読み取りシート As Worksheet
   Dim 書き込みシート As Worksheet
   
   Set 読み取りシート = Worksheets("Sheet1")
   Set 書き込みシート = Worksheets("書き込み")

   Dim i As Long
   Dim k As Long
   
   i = 1
  
   Do While 読み取りシート.Cells(i, 1).Value <> ""
       
       'kの初期化位置注意です!
       k = 1
       Do While 読み取りシート.Cells(i, k).Value <> ""
           書き込みシート.Cells(i + 2, k + 2).Value = 読み取りシート.Cells(i, k).Value
   
           k = k + 1
       Loop
   
       i = i + 1
   Loop
End Sub

4. 配列に入れてみる

Sub 配列に入れてみる()
   Dim 読み取りシート As Worksheet
   
   Set 読み取りシート = Worksheets("Sheet1")
  
   Dim tmp()
   
   Dim 行数 As Long
   Dim 列数 As Long
   
   行数 = 読み取りシート.Cells(10000, 1).End(xlUp).Row
   列数 = 読み取りシート.Cells(1, 300).End(xlToLeft).Column
  
   ReDim tmp(行数, 列数)
   
   Dim i As Long
   Dim k As Long
   
   For i = 1 To 行数
       For k = 1 To 列数
           tmp(i, k) = 読み取りシート.Cells(i, k)
       Next
   Next
   
   Dim t
   
   '0のところには入ってないのをかくに~ん
   For Each t In tmp
       Debug.Print t
   Next

End Sub

5. オブジェクトを使って格納

Sub オブジェクトを使って格納()
   Dim 読み取りシート As Worksheet
   
   Set 読み取りシート = Worksheets("Sheet1")
  
   
   Dim 行数 As Long
   Dim 列数 As Long
   

   Dim rng As Range
   Dim tmp()
  
   Set rng = Range("A1").CurrentRegion
   
   '確認してみましょ~
   Debug.Print rng.Address
   
   tmp() = rng
  
   Dim t
   
   For Each t In tmp
       Debug.Print t
   Next

  
   Dim 書き込みシート As Worksheet
   Set 書き込みシート = Worksheets("書き込み")

   '削除しときます
   書き込みシート.Range("A1:AA1000").Clear
   
   '1次元配列だとできないです
   書き込みシート.Range("A1:AA9") = tmp()

End Sub


今回はここまで!!
さらっとこのくらいまで書けると、
転記に苦労しなくなるまであと少しです!!

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