Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Закрытая тема
Настройки темы
2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 05-08-2008
Описание: шапка
Microsoft Excel 2003 и более ранние версии


В этой теме обсуждаются только Microsoft Excel 2003 и более ранние версии. Если у вас вопрос по Microsoft Excel 2007 или по другим приложениями Office, обращайтесь в темы, перечисленные ниже.


Связанные темы:Другие темы по продуктам Micrоsoft Office



Исходный вопрос участника
Задача такая: ставлю курсор в excelе между столбцами и прога автомат.показывает ширину столбца в пикселях,а надо в сантиметрах.Как настроить  excel что бы сразу в сантиметрах показывал, или подскажите правила пересчёта.
Спасибо.

Отправлено: 17:03, 21-02-2004

 

Пользователь


Сообщения: 139
Благодарности: 0

Профиль | Отправить PM | Цитировать


было такое у одного пользователя, справился. оказалось следующее:
файл открывался нормально, тока его не видно на экране, т.е. происходило следующее, сам файл когда открывается а он находится за границами рабочаго стола в екселе, и поэтому при открытии ты видиш белый рабочий стол екселя. как справится, при открытом файле попробуй сменить разрешение монитора, тогда есть шаснс увидеть сам открытий файл или выполни комунду свернуть а потом развернуть можно наоборот. Удачи

Отправлено: 07:00, 26-08-2005 | #91



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


В столбце находятся ячейки в которых работают формулы.
Задача:исключить возможность появления в этих ячейках отрицательных чисел.

Отправлено: 16:34, 02-09-2005 | #92


Аватара для Pliomera

Технолог


Сообщения: 819
Благодарности: 117

Профиль | Отправить PM | Цитировать


Уточни немного задачу, что значит "исключить" ? А если результат формулы дает отрицательное число? То есть надо исключить область определения аргументов формулы, в которых ее значение отрицательно? Ну эту задачу вряд-ли возможно решить в общем виде, так как формулы могут быть бесконечно разнообразны. Другое дело можно использовать так называемое "форматирование по условию", при этом например все ячейки, в которых будут появляться отрицательные значения, можно сделать, например красным шрифтом, или на желтом фоне, или выделить другим типом форматирования. Если тебе нужно решение вопроса, опиши задачу в целом, можно в мыло...

Отправлено: 21:21, 02-09-2005 | #93


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уточняю:
в ячейке, где находится формула ,определяется разность между одной ячейкой
где число постоянно и второй ячейкой (накопительной),куда вводят данные.
При разности =0,необходимо заблокировать ввод в накопительную ячейку.
Количество строк очень большое,
Спасибо.

Отправлено: 23:11, 02-09-2005 | #94


Аватара для Pliomera

Технолог


Сообщения: 819
Благодарности: 117

Профиль | Отправить PM | Цитировать


Все равно не совсем понятно: в момент ввода числа в ячейку результат формулы в другой ячейке, зависящей от нее - ЕЩЕ НЕ ИЗВЕСТЕН!!! Он будет вычислен ПОСЛЕ окончания ввода числа и может оказаться как >0, так и <0. Невозможно поставить следствие впереди причины, или мы должны заставить электронную таблицу ПРЕДУГАДЫВАТЬ то, что собирается ввести пользователь.

Отправлено: 14:25, 03-09-2005 | #95


Старожил


Сообщения: 401
Благодарности: 10

Профиль | Отправить PM | Цитировать


PliomeraЧестно говоря, не силен в VBA. Предположение: не знаю, есть ли такие события как Validate или OnChange, видно ли там старое значение. Попробовать вычислить формулу для результирующей ячейки, если некорректное значение, изменения отклонить или восстановить старое значение и/или рявкнуть меседжбоксом.

PS придумалось по ходу: копировать старые значения в скрытый защищенный параллельный столбец/строку/лист и при "неправильном" значении восстанавливать оттуда.

-------
Успехов.


Последний раз редактировалось aESThete, 03-09-2005 в 15:04. Причина: PS


Отправлено: 15:00, 03-09-2005 | #96


Аватара для Pliomera

Технолог


Сообщения: 819
Благодарности: 117

Профиль | Отправить 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
Благодарности: 10

Профиль | Отправить 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


Аватара для Pliomera

Технолог


Сообщения: 819
Благодарности: 117

Профиль | Отправить PM | Цитировать


aESThete
Цитата:
вставить ту самую вычисляемую формулу
Это не всегда возможно, потому что формула может ссылаться на множество разных ячеек и считывать значения их всех программным способом может быть очень громоздко, а вариант проверки по некоторому условию результата формулы записанной на листе - возможен, потому что значение в ячейке, содержащей формулу перевычисляется ДО окончания работы процедуры Worksheet_Change. Не обязательно эта формула должна быть справа от изменяемой ячейки, это просто для примера...

Отправлено: 12:38, 04-09-2005 | #99


Старожил


Сообщения: 401
Благодарности: 10

Профиль | Отправить PM | Цитировать


Pliomera
Цитата:
значение в ячейке, содержащей формулу перевычисляется ДО окончания работы процедуры Worksheet_Change
Наверное вы имели ввиду до вызова процедуры? Т.е., как я понял, сначала делаются все перерасчеты формул (стабилизация таблицы), а потом вызывается процедура обработки события. Будем иметь ввиду.

-------
Успехов.


Отправлено: 12:47, 04-09-2005 | #100



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2003/XP/2000 - [архив] Microsoft Excel 2003 и более ранние версии

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход