String vs Integer
Немного неясно, что здесь происходит, но я заметил, что вы объявили все свои массивы как integer , поэтому вы не можете передать строк им.Попытайтесь выяснить, в какой массив вы пытаетесь передать строки, и объявите его как вариант или реализуйте некоторый «условный» код, такой как:
If Not IsNumeric(Cells("A1").Value) then
Variable = 0
End If
Read ashleedawg .
Вам не нужно выбирать рабочий лист, чтобы что-то с ним делать (см. Выбрать ).Вы можете написать
FinalRow = Sheets("Folha3").Cells(Rows.Count, 1).End(xlUp).Row
или
Sheets("Folha4").Range("A1").Resize(J - LBound(newArray) + 1) _
= Application.Transpose(newArray)
и сохранить строку, но, что более важно, не прыгать в рабочем буфере.Еще лучше использовать С :
With Sheets("Folha3")
FinalRow = .Cells(Rows.Count, 1).End(xlUp).Row ' Find the last row of data
ArraySize = FinalRow 'Get Array Size
ReDim myArray(ArraySize - 1)
For linha = 1 To FinalRow
Set cel1 = .Cells(linha, 1)
If cel1 = "*" Then
myArray(linha - 1) = Val(.Cells(linha, "B").Value) 'Populate de Array
End If
Next linha
End With
Обратите внимание на '. ' перед каждой ячейкой (.cells), это относится к объекту листа.
Попробуйте использовать переменные для объектов.Когда вы пишете
Sheets("folha3").
, ничего не происходит, вы должны помнить, что он может сделать.Но если вы присваиваете его переменной, intelliSense активируется, и вы можете видеть свойства и методы объектов, например,
Dim oWb as Workbook
Dim oWs as Worksheet
Set oWb = Activeworkbook
Set oWs = oWb.Sheets("Folha3")
Теперь, когда вы пишете:
oWs.
, IntelliSense показывает вамсвойства и методы объекта листа: например, «Активировать», «Ячейки», «Копировать», «Удалить», «Вставить» и т. д.
С помощью еще нескольких строк кода вы узнаете гораздо больше.