2015-09-30 1 views
0

Так что я пытаюсь заставить пользователей отправлять время в электронную таблицу и обновлять внешнюю книгу. Обновление работает нормально, но то, что я не могу получить, - это оператор If перед закрытием внешней рабочей книги, который проверяет, является ли ячейка, которую вы обновляете, пустой или не первой. Если ячейка пуста, перейдите и обновите, иначе верните сообщение.Проверка наличия ячейки пустой и обновление значения ячейки, если пусто с VBA

код до сих пор: Получает Runtime Error 424 (Object Обязательный)

Private Sub submit_Click() 
Application.ScreenUpdating = False 
Workbooks.Open Filename:="Test_Book.xlsx" 
ThisWorkbook.Activate 
Application.ScreenUpdating = True 

Dim fDate As Date 
Dim rw As Long 
Dim srchRange As Range 
Dim book2Name As String, book2 As Workbook 

book2Name = "Test_Book.xlsx" ' Name of Source File 
Set book2 = Workbooks(book2Name) 

fDate = Format(CDate(Month.Text & "/" & Day.Text & "/2015"), "dd/mm/yy") 
fTime = Format(Hour.Text & ":" & Min.Text, "hh:mm") 

Set srchRange = book2.Sheets("TB").Range("B:B") ' Search Range 

If Application.CountIf(srchRange, fDate) Then 
    rw = Application.Match(CLng(fDate), srchRange, 0) ' Return row of result 
Else 
    MsgBox Format(fDate, "dd/mm/yy") & " not found." 
End If 

sCell = book2.Sheets("TB").Range("D" & rw) 

If IsEmpty(sCell.Value) Then 
sCell.Value = fTime 
Else 
MsgBox ("There is already a time in this cell") 
End If 

Application.DisplayAlerts = False 
Workbooks("Master_Timesheet.xlsx").Close SaveChanges:=True 
Exit Sub 
End Sub 
+0

Если IsNothing (sCell.Value2) Тогда ... Или вы могли бы попробовать: Если IsEmpty (sCell.Value2) Затем –

+0

«что я не могу работать» - _what_ не работает? Вам нужно прояснить это. –

+0

@JeremyThompson Вы имели в виду 'IsEmpty()'? :) –

ответ

0

SCell не является объектом, его вариант, содержащий значение:

Попытка

Dim sCell as range 
    Set sCell=book2.Sheets("TB").Range("D" & rw) 
    If IsEmpty(sCell) then 
+0

Спасибо за это. Работает сейчас. – Velocius