Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

26 Сентябрь 2021, 05:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Фиксирование текущей даты  (Прочитано 1255 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Snyppi
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #53304: 15 Январь 2020, 08:48 »

Поэтому макрос надежнее
Хорошо, поставил я макросы. onChangeSingleCell работает.  onChangeRange скопировал тоже самое, поменял ячейки и не хочет никак работать. Естественно, макрос в событии листа меняю

Код:
REM  *****  BASIC  *****
Rem (©) Vladislav Orlov aka JohnSUN, Kyiv, 2017
Rem mailto:johnsun@i.ua


Option Explicit
Option Base  0

Sub onChangeSingleCell(oEvent As Variant)
Dim oCell As Variant
If oEvent.AbsoluteName = "$БУМАГА.$G$5" Then
oCell = oEvent.getSpreadsheet().getCellRangeByName("$БУМАГА.$G$4")
If oCell.getString()="" Then oCell.setFormula(Format(Now, "DD.MM.YYYY HH:mm:SS"))
EndIf
End Sub

Sub onChangeRange(oEvent As Variant)
Dim oSheet As Variant
Dim oCellWithData As Variant
Dim oChangedRanges As Variant
Dim oRangeToDate As Variant
Dim oRange As Variant
Dim oEditRange As Variant
Dim oRows As Variant
Dim oRow As Variant
Dim oCells As Variant
Dim oCell As Variant
Dim i As Long
On Error Resume Next
oSheet = oEvent.getSpreadsheet()
oCellWithData = oSheet.getCellRangeByName("G5:I35")
oChangedRanges = oCellWithData.queryIntersection(oEvent.getRangeAddress())
If IsEmpty(oChangedRanges) Then Exit Sub

oRangeToDate = oSheet.getCellRangeByName("G4:I4").queryEmptyCells()
If IsEmpty(oRangeToDate) Then Exit Sub
For Each oRange In oChangedRanges
oRows = oRange.getRows()
For i = 0 To oRows.getCount()-1
oRow = oRows.getByIndex(i)
oEditRange = oRangeToDate.queryIntersection(oRow.getRangeAddress())
If Not IsEmpty(oEditRange) Then
For Each oCell In oEditRange
oCell.setFormula(Format(Now, "DD.MM.YYYY HH:mm:SS"))
Next oCell
EndIf
Next i
Next oRange
End Sub


* СКРИН4.JPG (62.31 Кб, 441x612 - просмотрено 6 раз.)
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!