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

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

8 Июль 2020, 17:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Дата в ячейке в зависимости от выбора.  (Прочитано 1421 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Wiagra999
Участник
**
Offline Offline

Сообщений: 14


« Стартовое сообщение: 11 Февраль 2020, 22:46 »

Уважаемые форумчане.
Подскажите есть такая возможность. Пример.
Есть 4 ячейки. В 1 из них список выбора Отправил, Переслал, Закрыл. И есть 3 столбца которые называются Дата Отправки, Дата Пересылки, Дата завершения.
Допустим в ячейке 1 я выбрал "Отправил" необходимо что в столбце "Дата отправки" проставлялась сегодняшняя дата, и она оставалась навсегда, то есть не менялась, если я открою к примеру через неделю.
Не знаю, поймете или нет, чего я хочу. Просто немогу сюда загрузить файл, так как пишу с работы. Нельзя отправлять файлы.
Может есть такая формула.
Подскажите пож. очень облегчит работу.
« Последнее редактирование: 12 Февраль 2020, 02:37 от bormant » Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 931


« Ответ #1: 12 Февраль 2020, 10:02 »

Добрый день

Хотелку вашу можно только макросом сделать.
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Wiagra999
Участник
**
Offline Offline

Сообщений: 14


« Ответ #2: 12 Февраль 2020, 22:32 »

Добрый день

Хотелку вашу можно только макросом сделать.
Вы не подскажите макрос?
Записан
Rafik
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #3: 13 Февраль 2020, 07:15 »

приблизительно как-то так
Код:
Sub Izmeneno(oEvent)
' привязать этот макрос к событию листа "Содержимое изменено"
' Если в первой колонке выбран "Отправил", то во вторую запишет текущую дату
'---- Координаты диапазона, после изменения которого вызвана. Индекс Первой колонки не интересует, поэтому не смотрим её
' Последняя колонка диапазона. Если вызван из ячейки, то Start=End
nCol = oEvent.RangeAddress.EndColumn
nRow = oEvent.RangeAddress.StartRow
nRow_end = oEvent.RangeAddress.EndRow
' Текущий лист
oSheet = ThisComponent.Sheets(oEvent.RangeAddress.Sheet)
' Если хвост диапазона в первой колонке и одна ячейка
If (nCol=0) And (nRow = nRow_end) Then
                ' новое значение  "Отправил"?
                If (oEvent.string = "Отправил") Then
' заполняем ячейку второй колонки
oSheet.getCellByPosition(1,nRow).Value = Now
End If
End If
End Sub
« Последнее редактирование: 13 Февраль 2020, 07:19 от Rafik » Записан
Wiagra999
Участник
**
Offline Offline

Сообщений: 14


« Ответ #4: 15 Февраль 2020, 18:51 »

приблизительно как-то так
Да макрос работает, но если у меня не ячейка А1 и B2.
К примеру у меня значение отправил в Е1 и F1
Как изменить?
Записан
Wiagra999
Участник
**
Offline Offline

Сообщений: 14


« Ответ #5: 15 Февраль 2020, 19:05 »

Вот так вообще не работает. Не силён я в макросах(( Видимо не судьба облегчить.
Код:
Sub Izmeneno(oEvent)
' привязать этот макрос к событию листа "Содержимое изменено"
' Если в первой колонке выбран "Отправил", то во вторую запишет текущую дату
'---- Координаты диапазона, после изменения которого вызвана. Индекс Первой колонки не интересует, поэтому не смотрим её
' Последняя колонка диапазона. Если вызван из ячейки, то Start=End
nCol = oEvent.RangeAddress.EndColumn
nRow = oEvent.RangeAddress.StartRow
nRow_end = oEvent.RangeAddress.EndRow
' Текущий лист
oSheet = ThisComponent.Sheets(oEvent.RangeAddress.Sheet)
' Если хвост диапазона в первой колонке и одна ячейка
If (nCol=0) And (nRow = nRow_end) Then
                ' новое значение  "Отправил"?
                If (oEvent.string = "Отправил") Then
' заполняем ячейку второй колонки
oSheet.getCellByPosition(2,nRow).Value = Now
If (nCol=0) And (nRow = nRow_end) Then
                ' новое значение  "Переслал"?
                If (oEvent.string = "Переслал") Then
' заполняем ячейку второй колонки
oSheet.getCellByPosition(3,nRow).Value = Now
If (nCol=0) And (nRow = nRow_end) Then
                ' новое значение  "Переслал"?
                If (oEvent.string = "Закрыл") Then
' заполняем ячейку второй колонки
oSheet.getCellByPosition(4,nRow).Value = Now

   
End If
End If
Записан
Wiagra999
Участник
**
Offline Offline

Сообщений: 14


« Ответ #6: 20 Февраль 2020, 19:08 »

приблизительно как-то так
Пожалуйста помогите, сделать.
Записан
Bigor
Мастер
*****
Offline Offline

Пол: Мужской
Сообщений: 931


« Ответ #7: 20 Февраль 2020, 19:40 »

Пробуйте
Код:
Sub Izmeneno(oEvent)
' привязать этот макрос к событию листа "Содержимое изменено"
' Если в первой колонке выбран "Отправил", то во вторую запишет текущую дату
'---- Координаты диапазона, после изменения которого вызвана. Индекс Первой колонки не интересует, поэтому не смотрим её
' Последняя колонка диапазона. Если вызван из ячейки, то Start=End
nCol = oEvent.RangeAddress.EndColumn
nRow = oEvent.RangeAddress.StartRow
nRow_end = oEvent.RangeAddress.EndRow
' Текущий лист
oSheet = ThisComponent.Sheets(oEvent.RangeAddress.Sheet)
' Если хвост диапазона в первой колонке и одна ячейка

If (nCol=0) And (nRow = nRow_end) Then

Select Case oEvent.String
Case "Отправил"
       oSheet.getCellByPosition(2,nRow).Value = Now
                       Case "Переслал"
oSheet.getCellByPosition(3,nRow).Value = Now
Case "Закрыл"
           oSheet.getCellByPosition(4,nRow).Value = Now
End Select
End If
End sub
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Rafik
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #8: 21 Февраль 2020, 07:15 »

У меня пример макроса привязан к первой колонке в условии If (nCol=0) And ... Наверное надо немного переделать условие и добавить ещё одну строку. Внесём изменения, чтобы проверить: "выделенный диапазон равен одной ячейке?" Вот список правок в код:
Код:
     ' Добавим сюда
nCol = oEvent.RangeAddress.EndColumn
' Добавляемая строка
nCol_start = oEvent.RangeAddress.StartColumn
...
' Условие перепишем так:
If (nCol = nCol_start) And (nRow = nRow_end) Then ' Выделена только одна ячейка?
' далее оставим как есть
Записан
Wiagra999
Участник
**
Offline Offline

Сообщений: 14


« Ответ #9: 10 Март 2020, 23:34 »

У меня пример макроса привязан к первой колонке в условии If (nCol=0) And ... Наверное надо немного переделать условие и добавить ещё одну строку. Внесём изменения, чтобы проверить: "выделенный диапазон равен одной ячейке?" Вот список правок в код:
Спасибо большое!!
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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