Страницы: 1
RSS
Калькулятор VBA
 
Поиском на форуме не смог найти всплывающего калькулятора, сделанного по аналогии с всплывающим календарем.  
В интернете нашел более менее подходящий вариант, видоизменил его к близкому виду с календарем.  
Но вот, что хотелось бы с ним сделать: добавить возможность ввода цифр и с клавиатуры, а нажатие кнопки равно меняло бы её на кнопку ОК и после нажатия ОК значение калькулятора вводилось в текущую ячейку. Это возможно?
 
У тестбокса txtNumber поставьте свойство Locked = False  
Сможете вводить цифры, буквы, что захотите, но работать будет коряво - надо весь код переписывать (имхо)  
По второму вопросу код такой:    
Private Sub cmdRavno_Click() ' Нажатие кнопки "="  
   If cmdRavno.Caption = "=" Then  
     cmdOperation 0  
     cmdRavno.Caption = "OK"  
   Else  
     cmdRavno.Caption = "="  
     ActiveCell.Value = txtNumber.Text  
     Unload Me  
   End If  
End Sub  
Заменяем им оригинальный
 
Да все работает спасибо.  
А по первому вопросу: действительно работает коряво, надо бы, чтобы при нажатии на клавиатуре клавиши + выполнялось математическое действие, а не писался символ +.  
Фактически надо написать код, который перехватывал нажатие с клавиатуры тех клавиш, которые есть в форме калькулятора и совершал действие этих клавиш в калькуляторе.  
Может кто поможет с таким кодом.  
Я поиском на форуме нашел много вопросов о таком калькуляторе, но ни одного решения.  
Многие были бы благодарны за такое решение.
 
Не могу представить необходимость простенького калькулятора в мощной электронной таблице.  
А может подойдет ввод данных с накоплением?  
Пример по 1 ячейке в приемах  
http://planetaexcel.ru/tip.php?aid=95&PHPSESSID1=, и в файле решение от ZVI по диапазонам.
 
В частном случае, например в моем: в моем документе директора ведут записи по расходу финансовых средств из кассы.  
Сам документ нашпигован формулами и макросами, записей много, которые потом группируются, суммируются по нескольким условиям, вносят данные из других документов и т.д. и т.д.  
Т.е. используют по максимуму возможности большого калькулятора (Excel).  
Но вот операторы, вносящие данные (директора - менеджеры высшего звена), c Excel на Вы, для них главное однозначность поставленной задачи, в частности внос данных только через выпадающие списки - чтоб мозги не напрягали как обозвать тот или иной расход или приход. И в том числе сам ввод чисел расходов и доходов: поступают просьбы сделать окно ввода сумм, с кнопочкой вызова калькулятора, если перед вводом надо из первичных документов, что-то сложить, вычесть и т.д.  
Я дома пользуюсь домашней бухгалтерией Козлова, вот с неё и содрал пример, как можно было бы это реализовать.  
Еще раз повторюсь, это из разряда красивостей и удобностей нежели острой жизненной необходимости.
 
На всякий случай: вот файл с поправками от "Лузер".
 
Согласен что частный случай - учет первичных документов уже предполагает наличие данных по ним. Остальное обработка имеющейся информации.  
А вообще, в подобном случае вспоминаю бородатый анекдот про главбуха со счетами. Когда его стыдили что он в век ЭВМ использует массажер, и ... приход маски шоу с налоговиками....
 
Мне исходный код не понравился, тем более переписывать его мне лень и времени нет.
 
Не понял, почему при открытии документа открывается калькулятор? Он должен открываться при выделении ячейки из прописанного диапазона.
 
{quote}{login=Punker}{date=24.07.2008 11:22}{thema=}{post}Не понял, почему при открытии документа открывается калькулятор? Он должен открываться при выделении ячейки из прописанного диапазона.{/post}{/quote}А вот из-за этого:  
Private Sub Workbook_Open()  
     
   Load Calculator  
   Calculator.Show  
 
End Sub
 
Спасибо огромное за помощь, маленькое дополнение:  
Как будет выглядеть код  
Private Sub cmdRavno_Click() ' Нажатие кнопки "="  
If cmdRavno.Caption = "=" Then  
cmdOperation 0  
cmdRavno.Caption = "OK"  
Else  
cmdRavno.Caption = "="  
ActiveCell.Value = txtNumber.Text  
Unload Me  
End If  
End Sub  
чтобы результат при нажатии кнопки "=" вставлялся не в активную ячейку, а в TextBox? Я сделал вызов калькулятора еще и из формы с тест боксом.
 
Тогда надо контролировать, кто вызвает калькулятор.  
С Application.Caller можно поиграться, но он навскидку у меня ошибку выдал.  
Еще путь: объявить глобальную переменную, которую менять при вызове из ячейки или текстбокса. А в cmdRavno_Click проверять ее значение и в звисимости от него писать в ячейку или текстбокс.
 
А можно, плиз, тот же калькулятор, только с точкой вместо запятой в качестве разделителя?
 

здесь ОБШИРНЕЙШЕЕ обсуждение проблемы переноса значения из калькулятора в ячейку. начиная разработкой собственного калькулятора через VBA, и заканчивая элегантным решением, как перенести цифру из стандартного виндовского... http://www.planetaexcel.ru/forum.php?thread_id=8200

Страницы: 1
Читают тему
Loading...