Я думаю, что вопросы такого рода предназначены для CodeReview.Вы можете получить лучший ответ там.
Я не уверен, что моя версия обязательно лучше:
Option Explicit
Private Sub AddCurrentDateTimeAfterLastRow()
Dim thisDate As Double
thisDate = Now()
With ThisWorkbook.Worksheets("Pressure Log")
Dim lastRow As Long
lastRow = .Range("B" & .Rows.Count).End(xlUp).Row
Dim outputArray() As Variant
ReDim outputArray(1 To 3)
outputArray(1) = Format(thisDate, "dddd")
outputArray(2) = Format(thisDate, "mm/dd/yyyy")
outputArray(3) = Format(thisDate, "hh:mm AM/PM")
With .Cells(lastRow + 1, "B").Resize(1, UBound(outputArray))
.Borders.LineStyle = xlContinuous
.FormulaLocal = outputArray
.Parent.Parent.Activate
.Parent.Activate
.Cells(1, 3).Select
End With
End With
End Sub
- Поставьте
Option Explicit
перед вашим кодом, чтобы гарантировать, что все переменные объявлены,(Возможно, у вас уже было это, я не знаю. Кажется, отсутствует начало вашего кода.) - Квалифицируйте рабочую книгу (например,
Thisworkbook
или Set
ссылка на нее), в противном случае этопредполагается, что он активен во время выполнения кода. - Насколько я понимаю,
Sheets
может относиться к обычным рабочим листам и диаграммам, тогда как Worksheets
может относиться только к рабочим листам.Поэтому было бы хорошо, если бы вы были явными и просто использовали Worksheets
. - Поскольку вы хотите, чтобы макрос (в конце) выбирал ячейку, важно, чтобы рабочая таблица и рабочая книга (которые содержат эту ячейку)активны во время выбора.В противном случае вы рискуете получить ошибку.
- Я поместил ваш день, дату и время в массив, а затем записал указанный массив на лист.Я просто думал, что назначения элементов массива были короче и чище (для чтения и обслуживания).