Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Не срабатывает пересчет книги для пользовательской функции
 
Да, спасибо за подсказку, вроде все работает. Даже не слышал про такой метод Volatile.
Не срабатывает пересчет книги для пользовательской функции
 
Много лет мучил вопрос, почему пользовательская функция  (вставленная в ячейки на листе) вычисляется только после выполнения Application.CalculateFull  (или Полный пересчет, соответствующей комбинацией из 3-ех клавиш с F9), но при этом автоматически не вычисляется при изменениях на рабочем листе вне зависимости от Параметра вычисления (Автоматически или Вручную) , а также не срабатывает Вычисление на листе (Shift+F9) или Вычисление всей книги (F9).

Как пример, есть пользовательская функция суммирования, которая зависит от типа форматируемых ячеек (например, суммирует только жирные цифры).
Application.CalculateFull  заставляет данную функцию работать (Пересчет осуществляется).
Все прочие команды (как в VBA), так и вычисления с помощью комбинации клавиш не действует.

Вопрос задан с целью оптимизации расчетов (чтобы много времени не уходило на расчет всей книги, а хочется чтобы расчет был либо по данной ячейке, либо по листу).
Всякий раз Application.CalculateFull - это не очень практичный вариант.

По сути вопрос в том, чем отличается Application.Calculate от Application.CalculateFull ???
Можно ли прописать процедуры события книги (например, Workbook_SheetSelectionChange) в качестве надстройки?
 
Да, то что нужно......Проверил-работает....До механизмов работы с переменной App (как описано) конечно самому невозможно догадаться! Спасибо еще раз!!!!!
Можно ли прописать процедуры события книги (например, Workbook_SheetSelectionChange) в качестве надстройки?
 
Сейчас почитаем, спасибо. Раз в 5 лет захожу сюда по необходимости, а Юрий М даже ночью на дежурстве. Спасибо. Сейчас посмотрим соответствует ли это моей проблеме?!
Можно ли прописать процедуры события книги (например, Workbook_SheetSelectionChange) в качестве надстройки?
 
Известно, что макросы и пользовательские функции можно включить в эксель с помощью пользовательских надстроек.
Можно ли с помощью подобных надстроек, либо каким другим способом, процедуры события книги  (например, Workbook_SheetSelectionChange) распространить на все файлы, которые буду создавать в Эксель.
Иными словами, в новом файле Эксель модули "Лист" и "Эта книга" изначально не имеют кода, а необходимо чтобы был.  
Отключение автоматической установки цвета фона ячейки
 
Спасибо, помогло. До этого сам искал, но не смог найти!
Отключение автоматической установки цвета фона ячейки
 
Доброй ночи!
Уважаемые специалисты Эксель, подскажите как избавиться от того, чтобы Эксель автоматически не устанавливал цвет ячейки на основании цвета ячейки, расположенной над нею после нажатия клавиши Enter.

На деле выглядит так:
1. Есть ячейка с фоном (скажем розовым)
2. Ввожу данные в ячейку под ней и нажимаю Enter
3. Данная ячейка также становится розовой

Как избавиться от подобного автоматической установки цвета?
Мне нужно, чтобы цвет ячейки не менялся.

Это отключается в рамках опций Эксель, либо на уровне VBA?
Как отформатировать число в TextBox?
 
Цитата
Юрий М пишет:
1). И вообще не пойму - зачем форматировать именно в TextBox? Что Вам даст там наличие пробела между разрядами?
2). Форматируйте уже при присвоении значения ячейке. Не вижу вообще проблемы: как писал выше - cdbl нормально справляется. А вот менять точку на запятую можно и при вводе.

Ответы:
1). Ну это вопрос чисто эстетики при работе с Формой конечного пользователя
2). В ячейке все легко отформатируем, даже не задавал бы вопросов.
3). За Cdbl спасибо!
Как отформатировать число в TextBox?
 
Юрий М, ну, Вы только подтверждаете сказанное....Это 12345.6789 - Exel воспринимает как текст, а если 12345.6789 находится в TextBox, то Cells(1,1) =TextBox.value получится нормальное хорошее число 12345,6789
Я сам удивился, когда это обнаружил, поэтому и поменял , на . в обработке TextBox.
Отчего еще больше запутался!

Короче ни с запятой ни с точкой пока нет результата!
Изменено: evgmaz - 10.05.2013 00:08:25
Как отформатировать число в TextBox?
 
Цитата
ikki пишет: предлагаю попробовать так...
Попробую ваш вариант, но вот что настораживает:
Почему с целым числом обсуждаемый с вами утром вариант с процедурой Change и кодом
TextBox1.Text = Format(st, "#,##0" ;)
работает превосходно!

А ДЛЯ ДЕЙСТВИТЕЛЬНОГО ЧИСЛА (когда запятая есть) вариант с процедурой Change и кодом
TextBox1 = Format(TextBox1, "#,##0.##" ;)  уже не работает??????!!!!! Получается полностью необъяснимый результат!
И ради это приходится выкручиваться разными способами (например, как вы указали)?!!!!
Как отформатировать число в TextBox?
 
Совершенно верно, в TextBox всегда текст (это хорошо известно), но вот когда данные из TextBox я копирую в ячейку Листа, то Exel воспринимает текст с точкой как число, а текст с запятой как текст.
В первом случае с ячейкой можно работать как с числом (например, прибавить 1), а во втором случае при прибавлении 1 на автомате получите ошибку!
Я прихожу к выводу, что тема форматирования в Exel самая муторная. Много раз возвращался к этой теме (за несколько лет) и всякий раз какая-то нелогичность возникает!
Ни отчего другого в Exel не возникает подобного дискомфорта!
Как отформатировать число в TextBox?
 
Цитата
Юрий М пишет: Не могу также понять необходимость переменной st - зачем она вообще?
st можно не вводить (это не принципиально!). Согласен.
Точку ввожу из-за того, что при помещении значения TextBox в ячейку листа, число вносится как число, а не как текст. (Раньше была запятая, от которой отказался, так как водился текст).
Кстати поменял . на , также ничего не работает!

С Exit конечно все работает, то хочется чтобы форматировалось во время набора, а не после выхода из TextBox.....

Продолжаю осмысливать идеи....но пока нет результата!
Изменено: evgmaz - 10.05.2013 00:07:08
Как отформатировать число в TextBox?
 
И все таки продолжу:

Проблема с плавающей запятой.
Если все то же самое проделать с плавающей запятой (в процедуре TextBox1_Change())
st=TextBox1.Value
TextBox1 = Format(st, "#,##0.##")
то в итоге вообще я не понимаю Excel

Ввожу: 12345.6789
Полагаю, что получу: 12 345.67
А получаю: 1,23 (цифра 4 уже не вводится, а запятая ввелась сама). Запятая-это что делить разрядов, либо математический знак?

Запись "#,##0.##" проверял с NumberFormat применительно к ячейкам, то все работает ок!
В чем может быть проблема?
Как отформатировать число в TextBox?
 
Спасибо, всегда приятно, что свои мысли (подходы) одобряются профессионалами
Как отформатировать число в TextBox?
 
Цитата
ikki пишет: а что там у вас в переменной st - нам, извините, не видно  :(  
Подозрение у вас правильное, в процедуре KeyPress в переменную st попадает число до нажатия клавиши, а не после, поэтому форматирование неверное.

Если сделал процедуру Change, типа
Private Sub TextBox1_Change()
st = TextBox1.Value
TextBox1.Text = Format(st, "#,##0")  
End Sub

то все заработало верно.....Но какой-то осадок остался, кажется все можно достойно решить в рамках одной процедуры KeyPress, просто я увы не до конца понимаю "график" ее работы.
спасибо за советы.
Как отформатировать число в TextBox?
 
воспользовался советом от Юрия М, но вот такой код в процедуре TextBox1_KeyPress:
st = TextBox1.Value

If KeyAscii >= 48 And KeyAscii <= 57 Then
TextBox1.Text = Format(st, "#,###" ;)
Exit Sub
Else
KeyAscii = 0
Exit Sub
End If

дает в итоге неправильный формат, типа 1 234 5678 (т.е. делит не по 3 разряда, а в конце оставляет 4).
А должно быть: 12 345 678

Не пойму то ли ошибка в использовании ф-ии Format, то ли не корректность ее использования в процедуре KeyPress (и надо поискать другую процедуру)?!
Как отформатировать число в TextBox?
 
Цитата
Юрий М пишет: Запишите рекордером...
Спасибо за совет! Попробуем!
Как отформатировать число в TextBox?
 
В нем использовал предопределенный формат Standard, но он дает только 2 цифры после запятой, а мне нужны все!
Как отформатировать число в TextBox?
 
Есть числовое значение в TextBox (оно может быть как целым (Long), так и с плавающей запятой).
Как отформатировать в TextBox значение с разделителем тысяч (например, пробелом).
Выполнение клавиш клавиатуры в TextBox
 
Спасибо, ключевого знания не хватало KeyAscii = 0, чтобы отменить ввод символа с клавиатуры!!!
Выполнение клавиш клавиатуры в TextBox
 
Подскажите, каким кодом выполнить действие клавиши (Например, Del или BkSpace) в элементе формы TextBox?
В итоге хочу, чтобы автоматически удалялись неправильно введенные элементы с клавиатуры!
варианты заполнения Имени массива
 
все, одолел!!!
варианты заполнения Имени массива
 
Идею понял, из двоеточия переводится с точкой запятой; только пока с ошибками, вместо данных пишет:
{#Н/Д;#Н/Д;#Н/Д;#Н/Д;#Н/Д;#Н/Д}

Разбираюсь, думаю, что поборю...
Вам спасибо...!
варианты заполнения Имени массива
 
Не могу понять, где находиться тонкая настройка в заполнении массива.
Обнаружил, что нижеследующий код (где а -это массив)
a = Range("Баланс").Value
ActiveWorkbook.Names("Статьи").RefersToR1C1 = a

дает разные результаты в сохранении Имени массива.
1). Если Range("Баланс") -это строка на листе, то сохраняется как ={"q1";"q2";"q3";"q4";"q5";"g7"}

2). Если Range("Баланс") -это столбец на листе, то сохраняется как={"q1":"q2":"q3":"q4":"q5":"g7"}

Где находится настройка (параметр), чтобы столбец сохранялся по первому варианту, т.е. через точку с запятой, а не через двоеточие.....
является ли имя именованной константой?
 
Спасибо ZVI, Вы даже помнится как-то уже помогали мне еще на старом форуме....

Собственно говоря, Вы продемонстрировали новый для меня аппарат программирования через TypeName и Evaluate. Раньше я только разбирал по частям строку для решения подобных задач.
Чувствовал, что можно как-то иначе (более красиво), но не знал!
является ли имя именованной константой?
 
[QUOTE]ZVI пишет:
Понятно, тогда можно, например, проще:
Код
 Function IsConstant(MyName As String) As Boolean
  Dim s As String
  s = Trim(Mid(Names(MyName).RefersTo, 2))
  IsConstant = IsNumeric(s) Or Mid(s, 1, 1) = """"
End Function 


Спасибо ZVI.... проверил, работает....
Я правильно понимаю, что для массива можно аналогично только фиг скобку надо выделять....
По другому никак?
является ли имя именованной константой?
 
Спасибо, сейчас изучаю ваше решение....
RefersTo: =1 - это константа
RefersTo: ==Лист2!$H$15+Лист2!$J$13 - это формула
RefersTo: ={"пн";"вт";"ср";"чт"} - это массив

Вы правильно уловили мой вопрос...из кучи возможных имен, нужно выбрать конкретного типа (в частности константы, и в частности массивы)
является ли имя именованной константой?
 
Цитата
ZVI пишет: При проверке, полагаю, достаточно считать, что если не диапазон, то это константа
А так считать нельзя, поскольку у меня бывают и именованные массивы и именованные формулы
является ли имя именованной константой?
 
Не понимаю ответа, но если действительно нет содержательного решения, тогда смело закрывайте тему.....
Мне казалось, что это очень простая задача, судя по аналогичным вопросам, но мне самому не удавалась ее решить....
Никого обижать и брать на слабо не собирался. Об этом вы сами сказали.....
Спасибо!
является ли имя именованной константой?
 
что, нет решений. как красиво решить задачу?
Страницы: 1 2 След.
Наверх