определяемый приложением или объектом для переменных строк и нескольких листов

#vba #excel

#vba #excel

Вопрос:

Я не думаю, что это дубликат, однако я прошу прощения, если это так.

Я очень новичок в VBA, поэтому я надеялся, что кто-нибудь просмотрит мой код и поможет мне устранить ошибку, определяемую приложением или объектом, которую я получаю в строке ниже:

 Set aCell = ActiveSheet.Range("P10:" amp; Cells(i, 0).Address) 'Trying to select rows based on value in i starting with P10
 

Вот полный макрос:

 Sub freeze2()

Dim ws      As Worksheet
Dim aCell   As Range
Dim strg()  As String
Dim count   As Integer
Dim i       As Integer
Dim size As Integer

size = ActiveSheet.Range("B9:B79").Find(What:=Worksheets("Email Template").Range("B5").Value) 'Looks for current fiscal week

Debug.Print size
count = 0

For i = 1 To size 'should represent current fiscal week back to first week of year, so for this week the range would be 1 to 40
Next i
ReDim numbers(size)

' Get each RED sheet
For Each ws In Worksheets
If ws.Tab.Color = 255 Then                      ' Find only RED tabs
    Debug.Print "-----------------------------------------------------------------------"
    Debug.Print "Name of Red Sheet: '" amp; ws.Name amp; "'"        ' Debug...

    Sheets(ws.Name).Select
    Set aCell = ActiveSheet.Range("P10:" amp; Cells(i, 0).Address) 'Trying to         select rows based on value in i starting with P10
    If Not aCell Is Nothing Then
        Set aCell = Range("H10") 'Taking acell and hopefully copying as values to H10
        'Selection.copy
        'Range("H10").Select
        'Selection.PasteSpecial xlPasteValues
    Else

    End If
    Application.CutCopyMode = False         ' Unselect cell
End If
 

Следующий ws

End Sub

Все, что я пытаюсь сделать, это выбрать диапазон ячеек (всегда один столбец, однако размер строки будет меняться каждую неделю) и скопировать эти значения в другой столбец. Этот диапазон находится в одном и том же месте на всех красных листах.

Комментарии:

1. Ваша ссылка недействительна. Индексация ячеек начинается с 1, а не с 0.

2. нет столбца 0. Столбец A равен 1 и так далее. Измените значение ActiveSheet.Range("P10:" amp; Cells(i, 0).Address) на ActiveSheet.Range("P10", ActiveSheet.Cells(i,16))

3. вау, чем больше я читаю, тем меньше понимаю. Ваш цикл for ничего не делает. я, на который вы ссылаетесь в прерывистой строке, всегда будет size 1 .

4. Спасибо, Райан, я чувствую себя глупо. Я ценю помощь!

5. @Scott Craner это действительно было необходимо? вау, чем больше я читаю, тем меньше понимаю. Не очень полезно.

Ответ №1:

Я хотел обновить это, чтобы показать редактирование Райана

Установите ACell = ActiveSheet .Range(«P10:» amp; Cells (i, 1).Адрес) ‘Пытается выбрать строки на основе значения в i, начиная с P10

Комментарии:

1. Вы должны посмотреть этот видеоряд на YouTube: Введение в Excel VBA

2. Спасибо, Томас, я посмотрю на них!