EDIT:VBA Excel 2010 - Ошибка выполнения «1004» Application или объекта-deined ошибка
Таким образом, появляется мой первенствовать документ содержит мой код поврежден, таким образом, приводит к весьма необычной проблемой, я благодарю вас все за помощь, которую вы дали. Это было решено путем перемещения всех макросов и листов в новый документ excel.
Код ниже получит сообщение об ошибке «Ошибка выполнения» 1004 «Определенная приложением или ошибка объекта» на ActiveCell.Offset(1, 0).Select
внизу, но при этом запускается код также оленья кожа запускать [C7].Select
часть либо (но нет никакого сообщения об ошибке в этой точке)
Я попытался с помощью, Range("C7").select
и Cells(7,3).select
, которые также не работают. Я также пробовал Application.Wait
, чтобы узнать, был ли макрос слишком быстрым, но это также не решает проблему, я удалил Application.ScreenUpdating = False
и снова это не работает.
Я пробовал этот макрос на 4 разных ПК и 2 разных версиях excel, и все они имеют одинаковую проблему.
EDIT:
Просто, чтобы очистить вещи, как я думаю, что мой explination выше, может быть немного неясным
Проблема в настоящее время с этим участком кода
[C7].Select
'Do Until ActiveCell.Row >= Finalrow
'drop out of loop if no more dates detected in row 3
Do Until sName = Cells(ActiveCell.Row, 1).Value
ActiveCell.Offset(1, 0).Select
Loop
Что происходит когда я запускаю код в эту часть кода, это сообщение об ошибке выше появится на ActiveCell.Offset(1, 0).Select
этой строке, однако [C7].Select
также не выбирает ячейку C7 (она остается в ячейке который уже был выбран).
Предполагается, что он пройдет по ячейкам в столбце C, смотрящим на столбец A, до тех пор, пока он не достигнет имени лица (определяется sName
), как только он доберется до этого, он будет запускать остальную часть кода (что я нету вывешен на я не могу получить дальше, чем этот момент, я могу отправить все это по желанию)
Option Compare Text
Public sLeave As Integer, iAnnualLeave As Integer, sLeaveType As String
Sub LeaveChecker()
Dim iAnnualLeave As Integer
bTrackingLeave = False
bReachedEndOfChart = False
bStartDateFound = False
'Set Color with If Statement
sTypeOfLeave = [D12].Value
If sTypeOfLeave = "Annual Leave" Then
sLeaveType = "AL"
ElseIf sTypeOfLeave = "Flexi Leave" Then
sLeaveType = "FL"
sLeaveTypeAmPm = "FL???"
ElseIf sTypeOfLeave = "Special Leave" Then
sLeaveType = "SpL"
ElseIf sTypeOfLeave = "Study Leave" Then
sLeaveType = "StL"
ElseIf sTypeOfLeave = "Meeting/Traning" Then
sLeaveType = "M/T"
End If
'Check to see if type of leave is populated
If sTypeOfLeave = "" Then
MsgBox ("Please Populate Type Of Leave")
End If
Application.ScreenUpdating = False
'Find last sheet name
Set ws = Sheets(Sheets.Count)
sLastSheet = ws.Name
sName = [M3].Value
If sName = "" Then
MsgBox ("Please Enter A Staff Members Name")
Exit Sub
End If
Sheets(ActiveSheet.Index + 1).Activate
SearchNewSheet:
If ActiveSheet.Name = sLastSheet Then
bReachedEndOfChart = True
GoTo LastStage
End If
Do Until ActiveSheet.Name = sLastSheet 'Main LOOP~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If bReachedEndOfChart = True Then GoTo FinalGather
'Find Person Name
[C7].Select
'Do Until ActiveCell.Row >= Finalrow
'drop out of loop if no more dates detected in row 3
Do Until sName = Cells(ActiveCell.Row, 1).Value
ActiveCell.Offset(1, 0).Select
Loop
«ошибки из». Что оно делает? Если он выдает ошибку, то какая ошибка? –
Вы должны поставить 'Option Explicit' в верхней части вашего модуля и объявить все свои переменные. Такое интенсивное использование необъявленных переменных является ошибкой, ожидающей своего появления. –
Возможно, вы пытаетесь выбрать ячейку ниже последней доступной, поскольку у вас нет элементов управления для остановки цикла, если имя не совпадает. – Rory