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

Страницы: 1 2 След.
Одинаковое исходное значение получает в TextBox разное значение на разных компьютерах
 
Цитата
sokol92 написал:
О причине бедствий см. сегодняшнюю   тему .
Спасибо! Как же совпало бедствие с объяснением:))
Изменено: Leo Grig - 02.07.2019 17:28:48
Одинаковое исходное значение получает в TextBox разное значение на разных компьютерах
 
Я как раз так и сделал - при копировании из TextBox1 заменял точку на запятую, а потом преобразовывал в число Cdbl(TextBox1.Value).
Проблему решил, но причину пока наверняка не выяснил:)))

Спасибо большое!
Одинаковое исходное значение получает в TextBox разное значение на разных компьютерах
 
Цитата
Ігор Гончаренко написал:
точно у всех?
Пользователи уверяют, что да. Да и ИТ всем ставят одинаковые системы. Пойду проверять настройки Excel, заодно и это проверю.
Одинаковое исходное значение получает в TextBox разное значение на разных компьютерах
 
Цитата
Sanja написал:
ИспользуйтеCells(x, y) = CDbl(TextBox1)
Спасибо, сейчас как раз пробую различные варианты.
Одинаковое исходное значение получает в TextBox разное значение на разных компьютерах
 
Подготовил файл c макросами и UserForm, в котором, в том числе, в зависимости от выбранных значений ListBox в TextBox отображается нужная сумма баллов (TextBox1.Value = Cells(x, y).Value. Потом баллы из TextBox копируются на другой лист Excel (баллы копируются уже как числовое значение, использую Cells(x, y).Value = Val(TextBox1.Value).
У меня и у большинства пользователей все прекрасно и корректно работает, но у некоторых сумма баллов неправильно отображается в TextBox и так же неправильно копируется из TextBox в ячейку листа - вместо 1,5 копируется 1,0, вместо 0,5 копируется 0. Формул в ячейках нет, ячейки отформатированы как числовые, с двумя знаками после запятой.
У всех стоит Windows 7 64-разрядная, у всех Офис 2016.
Файл, к сожалению, приложить не могу.
Если кто-нибудь сталкивался с такой проблемой, подскажите, в чем может быть причина?
Спасибо!
Можно ли задавать время задержки в долях секунд?
 
Цитата
Юрий М написал:
А вывести MsgBox с информацией о завершении  работы макроса?
Это потребует от пользователя сделать лишний клик или нажатие. А мне нужно приблизительно то, что описал БМВ. Сейчас подумал, что идеальным было бы решение, когда форма исчезает при шевелении мышки. Но боюсь, что такое мне не по силам:)
Спасибо!
Изменено: Leo Grig - 18.10.2018 16:42:03
Можно ли задавать время задержки в долях секунд?
 
Дмитрий(The_Prist) Щербаков, спасибо, DoEvents очень помог, сейчас регулярно использую.
В моем примере задержка просто для появления заставки на 3 секунды.
А короткое появление формы (на полсекунды) хочу применять для быстрых операций, когда прогрессбар использовать бессмысленно, чтобы дать пользователю какой-то визуальный сигнал о том, что макрос выполнил работу.

Спасибо, Kuzmich, возьму на вооружение.
Можно ли задавать время задержки в долях секунд?
 
Excel 2010. При открытии книги вывожу на экран форму и делаю задержку макроса на 3 секунды. Увидел такой вариант задержки с использованием цифры 86400, насколько я понимаю, это количество секунд в сутках.  А есть ли в VBA возможность регулировать время в долях секунды и как это можно сделать? Спасибо!
Код
Private Sub Workbook_Open()
frmTitle.Show (0)
frmTitle.Repaint
Application.Wait Time:=Now + 3 / 86400
Изменено: Leo Grig - 17.10.2018 20:51:48
Ошибка про программном добавлении макроса в модуль нового листа
 
Тогда получается, что во втором варианте кода вся эта очередь вычислений x1, x2, x3, x4 просто давала доп. время для завершения копирования, поэтому ошибка и не возникала:))
Дмитрий, коллеги, большое вам спасибо!!!
Ошибка про программном добавлении макроса в модуль нового листа
 
Дмитрий,
попробовал Ваш совет. Вставил DoEvents в первоначальный вариант кода - ошибка не исчезла.
Во втором варианте кода изменил строку Set x1 = ... на Вашу конструкцию - ошибки как не было, так и нет.  
Так в чем же было дело, что вызывало ошибку?
Ошибка про программном добавлении макроса в модуль нового листа
 
Попробовал использовать совет Казанского. Через последовательное вычисление ошибка вообще не возникает - раз 50 пробовал разные варианты, удалял листы, переименовывал их, пересохранял файл - макрос срабатывает стабильно. Спасибо!
Но причина ошибки осталась загадкой, и еще более интригующей:)
Код
Sub OpenHTML()
fff = Application.GetOpenFilename("Все веб-страницы,*.html")
If fff = "False" Then Exit Sub
Application.DisplayAlerts = False
Workbooks.Open (fff)
ActiveWorkbook.Sheets(1).Name = "EGRN"
ActiveWorkbook.Sheets("EGRN").Move After:=ThisWorkbook.Sheets("Report")
Dim lLineNum As Long
Set x1 = ThisWorkbook.Sheets("EGRN")
Set x2 = ThisWorkbook.VBProject
Set x2 = x2.VBComponents()
x4 = x1.CodeName
With x2(x4).CodeModule
    lLineNum = .CreateEventProc("SelectionChange", "Worksheet")
    lLineNum = lLineNum + 1
    .InsertLines lLineNum, "Static previous_selection As String"
    lLineNum = lLineNum + 1
    .InsertLines lLineNum, "If previous_selection <> """" Then"
    lLineNum = lLineNum + 1
    .InsertLines lLineNum, "Range(previous_selection).Interior.ColorIndex = xlColorIndexNone"
    lLineNum = lLineNum + 1
    .InsertLines lLineNum, "End If"
    lLineNum = lLineNum + 1
    .InsertLines lLineNum, "Target.Interior.Color = vbYellow"
    lLineNum = lLineNum + 1
    .InsertLines lLineNum, "previous_selection = Target.Address"
End With
End Sub
Изменено: Leo Grig - 17.09.2018 14:15:11
Ошибка про программном добавлении макроса в модуль нового листа
 
Как выкрутиться, я в общем-то понимаю. Собирался использовать вариант, который предложил  Ігор Гончаренко - создать скрытый лист с макросом в модуле листа как образец, при необходимости дублировать лист и в него вставлять данные из html (вместо сохранения html как нового листа). Про вариант Workbook_SheetSelectionChange почему-то не подумал, спасибо, Дмитрий!
Но очень хочется понять, почему макрос ведет себя так странно - то срабатывает, то не срабатывает. Никак не удается стабилизировать ошибку.
Ошибка про программном добавлении макроса в модуль нового листа
 

Добрый день!
У меня Excel 2010. Сделал макрос, который открывает файл формата html, переносит лист с загруженными данными в ThisWorkbook, переименовывает лист в "EGRN" и в модуль этого нового листа добавляет текст макроса для события SelectionChange. Лист "EGRN" периодически создается новый, поэтому и макрос для SelectionChange приходится все время добавлять на новый лист. Код для добавления текста макроса в модуль нашел в интернете.
Но макрос ведет себя странно - то все работает нормально, то возникает ошибка 9 в этой строке:
With ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets("EGRN").CodeName).CodeModule
и текст макроса для события SelectionChange в модуль листа EGRN не добавляется.
Точно отловить, в каком случае возникает ошибка, не получается. В большинстве случаев в первый раз после отладки (компиляции и сохранения файла) макрос срабатывает нормально, а потом, после удаления листа EGRN при загрузке нового html возникает ошибка. Но ошибка возникает не всегда!
Буду признателен на подсказку, что я сделал не так. Спасибо!

Код
 
 Sub OpenHTML()
 fff = Application.GetOpenFilename("Все веб-страницы,*.html")
 If fff = "False" Then Exit Sub
 Workbooks.Open (fff)
 ActiveWorkbook.Sheets(1).Name = "EGRN"
 ActiveWorkbook.Sheets("EGRN").Move After:=ThisWorkbook.Sheets("REPORT")
 Dim lLineNum As Long
 With ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets("EGRN").CodeName).CodeModule
     lLineNum = .CreateEventProc("SelectionChange", "Worksheet")
     lLineNum = lLineNum + 1
     .InsertLines lLineNum, "Static previous_selection As String"
     lLineNum = lLineNum + 1
     .InsertLines lLineNum, "If previous_selection <> """" Then"
     lLineNum = lLineNum + 1
     .InsertLines lLineNum, "Range(previous_selection).Interior.ColorIndex = xlColorIndexNone"
     lLineNum = lLineNum + 1
     .InsertLines lLineNum, "End If"
     lLineNum = lLineNum + 1
     .InsertLines lLineNum, "Target.Interior.Color = vbYellow"
     lLineNum = lLineNum + 1
     .InsertLines lLineNum, "previous_selection = Target.Address"
 End With
 ThisWorkbook.VBProject.VBE.mainwindow.Visible = False
 End Sub

Изменено: Leo Grig - 17.09.2018 12:47:51
Сайт Павла Юрьевича Климова!!!, Сайт упал или переехал? Есть у кого новый адрес?
 
Да, тоже о нем.
Сайт Павла Юрьевича Климова!!!, Сайт упал или переехал? Есть у кого новый адрес?
 
У меня этот сайт как палочка-выручалочка был... :(((  Ни у кого архива не осталось?
Изменение защиты ячейки при копировании из Word
 
Уважаемые форумчане!  
С ячейки в Excel снята защита, но при копировании в нее текста из Word ячейка снова становится защищенной (кроме случаев, если делаю вставку значения).    
Кто-нибудь может объяснить, в чем дело и как с этим бороться?  
Спасибо!
Функция ЧИСТВНДОХ не считает автоматически
 
У меня такая же проблема с функцией ЧИСТРАБДНИ и еще некоторыми.  
Формула выглядит так    
=ЕСЛИ(D6>0;(ЧИСТРАБДНИ(C6;D6;S$7:S$18)-1);0)  
Загружаю файл, в ячейках с такой формулой вместо значений показывает #ИМЯ? После нажатия F2 и Enter все работает нормально.  
Мастер функций формулы опознает и показывает правильное значение.  
Может, кто знает, в чем дело?
Подсчет количества использованных форматов ячеек в Excel 2003
 
The_Prist, большое спасибо!  
Сейчас попробую разобраться в этом styles.xlm, что же в конце концов Excel подразумевает под форматом ячейки:)
Подсчет количества использованных форматов ячеек в Excel 2003
 
Уважаемый The_Prist!  
Не подскажете, а как в Excel 2007 посмотреть количество форматов?  
Я попробовал сделать так - свой проблемный файл (последний, в котором еще не наступило переполнение форматов) сохранил в формате Excel 2007, дал ему расширение zip и распаковал. Нашел файл styles.xml и в нем увидел следующее:  
numFmts count      15  
fonts count     149  
fills count      38  
borders count     137  
cellStyleXfs count   627  
cellXfs count    2204  
cellStyles count     627  
dxfs count      96  
Общее количество форматов равно 3893, т.е. близко к критическим 4000.  
Так правильно?
Подсчет количества использованных форматов ячеек в Excel 2003
 
Подсчитал количество использованных форматов в своем проблемном файле.    
Создал новый файл с искусственным переполнением форматов, но с одновременным их подсчетом.  
Удалил все стили, остался 1 стиль. Создал блоки ячеек по 80 шт., добавил всем разную заливку, потом начал копировать, меняя размер шрифта, потом болд, курсив и т.д. Так дошел до 4000 тыс. При попытке добавить еще 80 новых возникло сообщение "Слишком много форматов".    
Путем постепенного добавления этих нумерованных форматов из нового файла в проблемный файл (в котором число форматов было неизвестно), коллега подсчитала количество использованных форматов и в нем. При добавлении 1000 форматов возникало сообщение, значит в исходном файле их было 4000 - 1000 = 3000.  
 
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
Подсчет количества использованных форматов ячеек в Excel 2003
 
Уважаемые коллеги!  
Как я понял, Excel 2003 поддерживает до 4000 уникальных форматов ячеек в одной книге. При превышении возникает сообщение "Слишком много форматов". На практике после возникновения этого сообщения пользователь рискует потерять файл.  
Поискав на форуме, понял, как можно разрешить возникшую проблему, но как ее предупредить - не нашел.  
Есть ли какой-нибудь способ узнать количество уже использованных форматов в файле? Например, с помошью VBA? Если да, то подскажите направление, как это сделать?  
Спасибо!
Ошибка при делении одинаковых чисел
 
С округлением понятно, но тогда частное от деления двух одинаковых чисел и от деления двух неодинаковых чисел (с небольшой разницей) будет одинаковым - 1,0. И смысл коэффициента потеряется.
Ошибка при делении одинаковых чисел
 
Уважаемые форумчане!  
Столкнулся с такой проблемой:  
Обрабатываю суммы поступлений, которые состоят из рублей и копеек, то есть всегда не более 2 десятичных знаков. Во время обработки суммы из ячеек складываются двумя разными способами и результат помещается в две отдельные ячейки.    
Первый итог получается в результате сложения всех сумм поступлений от контрагентов.  
Второй итог получается в результате сложения всех сумм поступлений от каждого контрагента и сложения всех этих сумм.  
Итоги совершенно одинаковые. Но в некоторых случаях при делении одного итога на другой вместо 1,0 получаю 0,999999999999999.  
Я уже делал так:  
При обработке в ячейках ставил формат денежный. Объявлял переменную как Decimal, присваивал ей значение из ячейки, очищал ячейку и помещал в нее обратно значение переменной. Все равно иногда вместо 1,0 получаю 0,999999999999999.  
Подскажите, пожалуйста, как этого можно избежать?
Проблема с отображением UserForm в модальном режиме
 
EducatedFool, действительно, у меня там Activate и Select достаточно понатыкано. Но как избавиться от этих нехороших слов? Мне надо обработать данные (в том числе и отсортировать) на двух разных листах.  
Сильно повысить скорость макроса вряд ли возможно - я отключаю обновление экрана и автопересчет, но когда приходится обрабатывать несколько тысяч строк, то время работы макроса уже существенное.  
Впрочем, вод код, макрос на кнопке Этап 1.
Проблема с отображением UserForm в модальном режиме
 
Я в модуле, в тексте макроса ставлю сначала UserForm.Show (0), Wait1.Repaint, а в конце - UserForm1.Hide. Там же, в начале макроса, и добавлял Application.Wait Time:=Now + TimeValue("0:00:01")  
В коде UserForm, где Private Sub UserForm_Click(), у меня ничего не прописано.  
Я что-то неверно делаю?
Проблема с отображением UserForm в модальном режиме
 
Спасибо, Дъмитръ, но увы - у меня этот способ не сработал:( (кроме честной задержки на 1 секунду:)))  
Мне иногда помогало отключить и заново включить надстройку Analysis ToolPak - VBA, но сейчас не сработало.    
Никак не пойму, почему в одном макросе все нормально работает, а в другом глючит...
Проблема с отображением UserForm в модальном режиме
 
Виноват, в первом сообщении имелся в виду немодальный режим, чтобы макрос продолжал работать.  
 
EducatedFool,    
Ваш совет помог. Когда после UserForm1.Show (0) добавил UserForm1.Repaint, то этого оказалось достаточно, чтобы текст появился (правда, Titlebar остается не активным). А добавление DoEvents ничего не меняет.  
Так или иначе, текст выводится.  
Спасибо!
Проверка открытия файла другим пользователем
 
Все варианты перепробовал. Все получается, если общий файл открыт на моем компьютере. При применении метода с UserStatus ругается. Возможно, потому, что я пока плохо знаю синтаксис). Полдня мучался, а потом все вдруг заработало на предложенном ZVI методе.  
Большое спасибо всем откликнувшимся и особенно ZVI!!!
Проверка открытия файла другим пользователем
 
Hugo, спасибо, но такой способ сработает, если кто-то открыл общий файл посредством макроса в файле пользователя. Но если он открыл общий файл вручную, то файл Открыто.txt не будет создан, соответственно, будет считаться, что общий файл доступен для записи.  
 
Я тут подумал (извините, если глупость скажу:), а что если в общем файле создать ячейку с формулой типа А1=ТДАТА() ? И взять значения из этой ячейки без открытия файла.    
Если файл кем-то открыт, то значение ячейки будет равно текущему времени.  
А если закрыт, то там будут храниться дата и время на момент последнего сохранения файла, т.е. значение будет меньше текущего времени. Или не так?  
 
The_Prist, спасибо! Я, правда, пока только начал постигать азы, но попробую разобраться:)
Проверка открытия файла другим пользователем
 
Сейчас сообразил - а если пользователь открыл файл с отключенными макросами, то способ ведь не сработает? :(
Страницы: 1 2 След.
Наверх