|
Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии |
|
2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии
|
Новый участник Сообщения: 8 |
Профиль | Отправить PM | Цитировать
Microsoft Excel 2003 и более ранние версии В этой теме обсуждаются только Microsoft Excel 2003 и более ранние версии. Если у вас вопрос по Microsoft Excel 2007 или по другим приложениями Office, обращайтесь в темы, перечисленные ниже. Связанные темы:Другие темы по продуктам Micrоsoft Office |
|
Отправлено: 17:03, 21-02-2004 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать было такое у одного пользователя, справился. оказалось следующее:
файл открывался нормально, тока его не видно на экране, т.е. происходило следующее, сам файл когда открывается а он находится за границами рабочаго стола в екселе, и поэтому при открытии ты видиш белый рабочий стол екселя. как справится, при открытом файле попробуй сменить разрешение монитора, тогда есть шаснс увидеть сам открытий файл или выполни комунду свернуть а потом развернуть можно наоборот. Удачи |
Отправлено: 07:00, 26-08-2005 | #91 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать В столбце находятся ячейки в которых работают формулы.
Задача:исключить возможность появления в этих ячейках отрицательных чисел. |
Отправлено: 16:34, 02-09-2005 | #92 |
Технолог Сообщения: 819
|
Профиль | Отправить PM | Цитировать Уточни немного задачу, что значит "исключить" ? А если результат формулы дает отрицательное число? То есть надо исключить область определения аргументов формулы, в которых ее значение отрицательно? Ну эту задачу вряд-ли возможно решить в общем виде, так как формулы могут быть бесконечно разнообразны. Другое дело можно использовать так называемое "форматирование по условию", при этом например все ячейки, в которых будут появляться отрицательные значения, можно сделать, например красным шрифтом, или на желтом фоне, или выделить другим типом форматирования. Если тебе нужно решение вопроса, опиши задачу в целом, можно в мыло...
|
Отправлено: 21:21, 02-09-2005 | #93 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Уточняю:
в ячейке, где находится формула ,определяется разность между одной ячейкой где число постоянно и второй ячейкой (накопительной),куда вводят данные. При разности =0,необходимо заблокировать ввод в накопительную ячейку. Количество строк очень большое, Спасибо. |
Отправлено: 23:11, 02-09-2005 | #94 |
Технолог Сообщения: 819
|
Профиль | Отправить PM | Цитировать Все равно не совсем понятно: в момент ввода числа в ячейку результат формулы в другой ячейке, зависящей от нее - ЕЩЕ НЕ ИЗВЕСТЕН!!! Он будет вычислен ПОСЛЕ окончания ввода числа и может оказаться как >0, так и <0. Невозможно поставить следствие впереди причины, или мы должны заставить электронную таблицу ПРЕДУГАДЫВАТЬ то, что собирается ввести пользователь.
|
Отправлено: 14:25, 03-09-2005 | #95 |
Старожил Сообщения: 401
|
Профиль | Отправить PM | Цитировать PliomeraЧестно говоря, не силен в VBA. Предположение: не знаю, есть ли такие события как Validate или OnChange, видно ли там старое значение. Попробовать вычислить формулу для результирующей ячейки, если некорректное значение, изменения отклонить или восстановить старое значение и/или рявкнуть меседжбоксом.
PS придумалось по ходу: копировать старые значения в скрытый защищенный параллельный столбец/строку/лист и при "неправильном" значении восстанавливать оттуда. |
------- Последний раз редактировалось aESThete, 03-09-2005 в 15:04. Причина: PS Отправлено: 15:00, 03-09-2005 | #96 |
Технолог Сообщения: 819
|
Профиль | Отправить PM | Цитировать Вот, по размышлению, такой может быть реализация идеи с резервированием предыдущих значений:
Предположим, что в столбце B листа Sheet1 в момент активации листа хранятся допустимые (валидные) значения, при котором результаты формул, записанных в столбце C - имеют также допустимые значения. Здесь могут быть 2 варианта: 1 вариант - число строк (пар значение-формула) конечно, например с 5 по 25 строку, и 2 вариант - число строк неопределено, допустим постоянно пополняемая таблица, при этом формулы протягиваются по мере надобности. В момент активации листа нам надо заполнить значениями из столбца текущих аргументов (B) заранее объявленный массив, размер которого будет либо фиксированным (1 вариант) либо динамическим (2 вариант), для того, чтобы воспользоваться нужным значением для отката, в случае, если пользователь введет некорректные данные. Таким образом: - объявляем в general declarations листа: Private UndoValues(5 To 25) As Variant 'Для 1 варианта Private UndoValues() As Variant 'Для 2 варианта В модуле листа пишем: Для 1 варианта: Private Sub Worksheet_Activate() Dim iCount As Integer 'Счетчик цикла For iCount = 5 To 25 UndoValues(iCount) = Sheets("Sheet1").Cells(iCount,2).Value 'Здесь 2 - номер столбца Next iCount End Sub Для 2 варианта (пусть ряд аргументов начинается также с 5 строки, но их число не определено): Private Sub Worksheet_Activate() Dim iCount As Integer 'Счетчик цикла Dim rowCount As Integer 'Счетчик строк rowCount = 5 'Присваиваем начальное значение Do Until Len(CStr(Sheets("Sheet1").Cells(rowCount,2).Value)) = 0 'Проверка не пуста ли очередная ячейка rowCount = rowCount + 1 'Инкремент Loop Redim UndoValues(rowCount - 1) 'Задаем диапазон динамического массива, при этом элементы с 0 по 4 нам не потребуются For iCount = 5 To rowCount - 1 UndoValues(iCount) = Sheets("Sheet1").Cells(iCount,2).Value 'Считываем значения Next iCount End Sub Теперь там же в модуле листа пишем: Private Sub Worksheet_Change(ByVal Target As Range) If Sheets("Sheet1").Cells(Target.Row, 3).Value >= 0 Then Exit Sub 'В данном случае - проверка является ли положительным значение формулы расположенной в соседней ячейке справа Target.Value = UndoValues(Target.Row) 'А здесь возвращаем первоначальное значение End Sub При последовательных изменениях в одной и той же ячейке, процесс считывания исходных валидных значений лучше убрать из события активации листа куда-нибудь еще, например в отдельный модуль, и вызывать, скажем по нажатию кнопки, или по событию Calculate. Надеюсь понятно изложил |
Отправлено: 04:37, 04-09-2005 | #97 |
Старожил Сообщения: 401
|
Профиль | Отправить PM | Цитировать Pliomera
Вот, родилось: Private Sub Worksheet_Change(ByVal Target As Range) If Target ... ' здесь надо проверить, попадает ли изменяемое значение в "наш" (сохраненный) диапазон If Sheets("Sheet1").Cells(Target.Row, 3).Value >= 0 Then ' здесь можно (нет, нужно!) вместо проверки соседней, вставить ту самую вычисляемую формулу, и проверять на валидность UndoValues(Target.Row) = Target.Value ' сохраняем вновь введенное значение для последующих возможных откатов else Target.Value = UndoValues(Target.Row) ' или возвращаем первоначальное значение end if end if End Sub |
------- Отправлено: 11:20, 04-09-2005 | #98 |
Технолог Сообщения: 819
|
Профиль | Отправить PM | Цитировать aESThete
Цитата:
|
|
Отправлено: 12:38, 04-09-2005 | #99 |
Старожил Сообщения: 401
|
Профиль | Отправить PM | Цитировать Pliomera
Цитата:
|
|
------- Отправлено: 12:47, 04-09-2005 | #100 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2003/XP/2000 - [архив] Microsoft Office 2003 и более ранние версии | 440 | Microsoft Office (Word, Excel, Outlook и т.д.) | 444 | 01-02-2010 06:11 | |
2003/XP/2000 - [архив] Microsoft Word 2003 и более ранние версии | Iriya | Microsoft Office (Word, Excel, Outlook и т.д.) | 580 | 31-01-2010 03:12 | |
2003/XP/2000 - [архив] Microsoft Outlook 2003 и более ранние версии | ShaddyR | Microsoft Office (Word, Excel, Outlook и т.д.) | 537 | 19-01-2010 12:36 | |
2003/XP/2000 - [архив] Microsoft PowerPoint 2003 и более ранние версии | Vadikan | Microsoft Office (Word, Excel, Outlook и т.д.) | 65 | 03-01-2009 11:31 | |
2003/XP/2000 - [архив] Microsoft Access 2003 и более ранние версии | dav02 | Microsoft Office (Word, Excel, Outlook и т.д.) | 100 | 30-11-2008 17:02 |
|