Я хочу разделить данные на разных листах на листе

Я пытаюсь автоматизировать электронную таблицу для переноса данных с одного листа на несколько листов взависимости от региона. существует более 39 тысяч строк, и я получаю сообщение об ошибке "Run-time Error '6': Overflow". Пожалуйста, кто-нибудь может мне помочь, а ниже - используемый код. Спасибо в ADVNCE

Sub parse_data()
 Dim LR As Long
 Dim ws As Worksheet
 Dim vcol, i As Integer
 Dim icol As Long
 Dim myarr As Variant
 Dim title As String
 Dim titlerow As Integer
 vcol = 14
 Set ws = Sheets("Sheet1")
 LR = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
 title = "A1:AA1"
 titlerow = ws.Range(title).Cells(1).Row
 icol = ws.Columns.Count
 ws.Cells(1, icol) = "Unique"
 For i = 2 To LR
 On Error Resume Next
 If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
 ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
 End If
 Next
 myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
 ws.Columns(icol).Clear
 For i = 2 To UBound(myarr)
 ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
 If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
 Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
 Else
 Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
 End If
 ws.Range("A" & titlerow & ":A" & LR).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
 Sheets(myarr(i) & "").Columns.AutoFit
 Next
 ws.AutoFilterMode = False
 ws.Activate
 End Sub
1 ответ

Во-первых, ваш вопрос должен быть помечен VBA, а не VB.NET - это большое различие, особенно если речь идет о размерах типов данных.

В VBA (VB6) и переменная объявлена как Integer является целым числом от подписано 2 байта означает диапазон значений -32,768 до 32,767

Это означает, что как только вы попытаетесь поместить 32,768 в переменную, объявленную как Integer, это вызовет ошибку переполнения, которую вы испытываете.

Изменение этого типа данных на "Long" должно исправить вашу проблему, поскольку у этого есть диапазон -2,147,483,648 2,147,483,647 -2,147,483,648 до 2,147,483,647

licensed under cc by-sa 3.0 with attribution.