Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


285 / 13645 ツリー ←次へ | 前へ→

【81179】配列の一括貼り付けについて tera 20/2/25(火) 12:47 質問[未読]
【81180】Re:配列の一括貼り付けについて ピンク 20/2/25(火) 18:14 発言[未読]
【81181】Re:配列の一括貼り付けについて ピンク 20/2/25(火) 18:43 発言[未読]

【81179】配列の一括貼り付けについて
質問  tera E-MAIL  - 20/2/25(火) 12:47 -

引用なし
パスワード
   22万件のデータを貼り付けたいです。
配列に格納して、一括貼り付けが早いと思っています。
6万件くらいまではエラーなくできるのですが、
7万件以上のデータがあるとエラーが出てしまいます。
実行時エラー"13"
型が一致しません

どこが問題かわからないためご教授願えないでしょうか。
下記にコードを記載します。

==========
Sub test1()
Dim wb As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Set wb = ThisWorkbook
Set ws1 = wb.Worksheets(1)
Set ws2 = wb.Worksheets(2)

Dim a() As Variant
Dim c As Long
c = 0
ReDim a(c)

Do Until ws1.Cells(c + 1, 1) = ""
  a(c) = ws1.Cells(c + 1, 1).Value
  c = c + 1
  ReDim Preserve a(c)
Loop

ws2.Activate
ws2.Range(Cells(1, 1), Cells(UBound(a) + 1, 1)).Value = WorksheetFunction.Transpose(a)

End Sub

【81180】Re:配列の一括貼り付けについて
発言  ピンク  - 20/2/25(火) 18:14 -

引用なし
パスワード
   Worksheet関数(WorksheetFunction.Transpose)で取り扱える 配列の上限は、
65536までみたいです。

【81181】Re:配列の一括貼り付けについて
発言  ピンク  - 20/2/25(火) 18:43 -

引用なし
パスワード
   予め配列のサイズを決めてWorksheetFunction.Transposeを使わなければ

Sub Test2()
  Dim wb As Workbook
  Dim ws1 As Worksheet, ws2 As Worksheet
  Set wb = ThisWorkbook
  Set ws1 = wb.Worksheets(1)
  Set ws2 = wb.Worksheets(2)
  Dim a() As Variant
  Dim n As Long, i As Long, j As Long

  'A例に定数が含まれるセルの数
  n = ws1.Columns(1).SpecialCells(xlCellTypeConstants).Count
  ReDim a(1 To n, 0)  '二次元配列

  For i = 1 To ws1.Cells(Rows.Count, 1).Row
    If ws1.Cells(i, 1) <> "" Then
      j = j + 1
      a(j, 0) = ws1.Cells(i, 1).Value
    End If
  Next
  ws2.Range("A1").Resize(n).Value = a
End Sub

285 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free