Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 622
от 04.10.2007, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 283, Экспертов: 39
В номере:Вопросов: 4, Ответов: 8


Вопрос № 103672: Здравствуйте, подскажите плиз, как победить ситуацию: Функция Right([summa];2) при поле summa=195.20 возвращает значение ".2" а не "20" - т.е. не видит ноль. При поле summa=195.21 все работает как часы...
Вопрос № 103680: Здравствуйте! Есть проблемма на VB6 при реализации алгоритма шифрования RSA (http://ru.wikipedia.org/wiki/RSA) А именно при вычеслении следующего кода: m=111111: e=3: n=9173503 c=m^e mod n 'здесь вылетает ошибка Overflow все ...
Вопрос № 103690: Как узнать номера (идентификаторы) иконок, которые можно присваивать пунктам меню, кнопкам или командам на панелях инструментов в Word (или Excel)? Например, идентификатор кнопки "Панель рисования" - 16 (ID:=16). Для присваивания иконо...
Вопрос № 103734: Доброе время суток! Господа Эксперты, подскажите функцию которая в определенных областях (к примеру: А2:В20, С10:В20) искала бы не повторяющиеся значения(т.е. значение "ООО" встречается в нескольких местах заданных массивов и на выходе ...

Вопрос № 103.672
Здравствуйте, подскажите плиз, как победить ситуацию:

Функция Right([summa];2)

при поле summa=195.20 возвращает значение ".2" а не "20" - т.е. не видит ноль.

При поле summa=195.21 все работает как часы и возвращается "21". Тоже самое происходит и с функциями len и left

Необходимо "учитывать" ноль.
PS. все поля фиксированные, 2 знака после запятой
Функцию использую в отчете.
Отправлен: 28.09.2007, 10:09
Вопрос задал: Джефф (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Alexander N. Monastyrsky
Здравствуйте, Джефф!
Воспользуйтесь функцией FIXED для формирования правильного отображения количества знаков после запятой.

Приложение:

---------
Страшен Русский сервис, бессмысленный и беспощадный...

Ответ отправил: Alexander N. Monastyrsky (статус: 2-ой класс)
Ответ отправлен: 28.09.2007, 11:01

Отвечает: PsySex
Здравствуйте, Джефф!
Используйте следующую конструкцию
Right(FormatNumber([summa], 2),2)
---------
Bom Shankar!
Ответ отправил: PsySex (статус: Практикант)
Ответ отправлен: 28.09.2007, 11:08

Отвечает: AlexanderZh
Здравствуйте, Джефф!
Дело в том, что right это функция для работы со стороками и сначала она преобразует ваше число в строку, затем отрезает 2 правых символа и возвращает их. В вашей ситуации я бы сделал так:
int(summa*100)-int(summa)*100

---------
Людей можно поделить на 10 типов: тех, кто понимает двоичную систему и тех, кто нет... © народное
Ответ отправил: AlexanderZh (статус: Практикант)
Ответ отправлен: 28.09.2007, 11:16

Отвечает: Черников Игорь Владимирович
Здравствуйте, Джефф!
Я тоже сталкивался с такой проблемой. Выход из положения у меня был такой:
Dim summa As String
Dim celayaChast As String
Dim drobnayaChast As String
summa = Worksheets("Лист1").Range("A1").Value
celayaChast = Fix(summa)
drobnayaChast = Mid(summa, Len(celayaChast) + 2)
Select Case Len(drobnayaChast)
Case 0
drobnayaChast = "00"
Case 1
drobnayaChast = drobnayaChast & "0"
End Select
summa = drobnayaChast

---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 6-ой класс)
Ответ отправлен: 28.09.2007, 19:29


Вопрос № 103.680
Здравствуйте!
Есть проблемма на VB6 при реализации алгоритма шифрования RSA (http://ru.wikipedia.org/wiki/RSA)
А именно при вычеслении следующего кода:
m=111111: e=3: n=9173503
c=m^e mod n 'здесь вылетает ошибка Overflow

все переменные as Variant/Double

Насколько я понимаю - обьявленным переменным не хвотает размера, но как в VB обьявить переменным тип с достаточным размером?
Можно связаться по icq:464840172

Приложение:

Отправлен: 28.09.2007, 11:21
Вопрос задал: Берговин Вдадимир (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: AlexanderZh
Здравствуйте, Берговин Вдадимир !
Попробуйте обойти это ограничение так:
Все переменные - variant (этот тип может содержать 12 байтный подтип Decimal)
Все значения присваивать через конвертирование к этому типу (m=CDec(111111) и т.д.)
Разрядности хватить должно - диапазон значений
+/-79 228 162 514 264 337 593 543 950 335

---------
Людей можно поделить на 10 типов: тех, кто понимает двоичную систему и тех, кто нет... © народное
Ответ отправил: AlexanderZh (статус: Практикант)
Ответ отправлен: 28.09.2007, 11:48
Оценка за ответ: 1
Комментарий оценки:
вообщето я уже перепробывал обьявлять все стандартные типы и в итоге пришёл к использованию variant как универсального типа. Но ничего не менялось-ошибка всёравно выскакивает! Ещё раз попробывал и вашу рекомендацию (преобразование типов с помощью функции СDec)-результат тотже, что я и ожидал!

Отвечает: Черников Игорь Владимирович
Здравствуйте, Берговин Вдадимир !
Я тоже сталкивался с такой проблемой. Выход из положения у меня был такой:
Dim summa As String
Dim celayaChast As String
Dim drobnayaChast As String
summa = Worksheets("Лист1").Range("A1").Value
celayaChast = Fix(summa)
drobnayaChast = Mid(summa, Len(celayaChast) + 2)
Select Case Len(drobnayaChast)
Case 0
drobnayaChast = "00"
Case 1
drobnayaChast = drobnayaChast & "0"
End Select
summa = drobnayaChast


---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 6-ой класс)
Ответ отправлен: 28.09.2007, 18:36
Оценка за ответ: 1
Комментарий оценки:
Черников Игорь Владимирович, спасибо за ответ, но причём тут ваш код, и где здесь какой остаток от деления(mid)????
Вы считали из ячейки некоторое число, непонятно зачем разложили его на дробную и целую часть. Если дробной части нет то ответ равен "00", если же есть то "0". К чему это всё. ПОЙМИТЕ должен получится ответ 4051753, но в VB почемуто не хватает памяти для этой операции!


Вопрос № 103.690
Как узнать номера (идентификаторы) иконок, которые можно присваивать пунктам меню, кнопкам или командам на панелях инструментов в Word (или Excel)?
Например, идентификатор кнопки "Панель рисования" - 16 (ID:=16). Для присваивания иконок программным образом хотелось бы сначала знать, какой номер принадлежит какой иконке.
Спасибо.
Отправлен: 28.09.2007, 13:41
Вопрос задал: Кокин Антон Вадимович (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Alec Perle
Здравствуйте, Кокин Антон Вадимович!
Когда мне нужно было также узнать значение ID определенной команды меню, я воспользовался кодом (см. приложение).
В нем перебираются все элементы Controls (элементов управления) всех CommandBars (панелей инструментов) и выводятся наименования и номера ID, а также наменования панели инструментов, на которой находится кнопка.
Только вот у кнопки "Рисование" у меня получилось ID=204.

Приложение:

---------
Пессимист - это хорошо информированный оптимист (а оптимист - хорошо проинструктированный пессимист)

Ответ отправил: Alec Perle (статус: Студент)
Ответ отправлен: 28.09.2007, 14:17
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Я делаю в Word, поэтому и номера вероятно другие.


Вопрос № 103.734
Доброе время суток!
Господа Эксперты, подскажите функцию которая в определенных областях (к примеру: А2:В20, С10:В20) искала бы не повторяющиеся значения(т.е. значение "ООО" встречается в нескольких местах заданных массивов и на выходе этой функции должно присутсвовать число "1", при большем числе самих значений соответсвенно количество этих значений).
Или как можно эту функцию реализовать в EXEL.
Спасибо Всем!
Отправлен: 28.09.2007, 21:54
Вопрос задал: Зенченко Константин Николаевич (статус: Специалист)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Vaga
Здравствуйте, Зенченко Константин Николаевич!

Function Find( _
<InAttribute()> ByVal What As Object, _
<InAttribute()> Optional ByVal After As Object, _
<InAttribute()> Optional ByVal LookIn As Object, _
<InAttribute()> Optional ByVal LookAt As Object, _
<InAttribute()> Optional ByVal SearchOrder As Object, _
<InAttribute()> Optional ByVal SearchDirection As XlSearchDirection, _
<InAttribute()> Optional ByVal MatchCase As Object, _
<InAttribute()> Optional ByVal MatchByte As Object, _
<InAttribute()> Optional ByVal SearchFormat As Object _
) As Range
более подробная информация на http://msdn2.microsoft.com/it-it/library/microsoft.office.interop.excel.range.find(VS.80).aspx
---------
Ошибка становится ошибкой, когда рождается как истина. Станислав Ежи Лец
Ответ отправил: Vaga (статус: 6-ой класс)
Ответ отправлен: 30.09.2007, 04:01
Оценка за ответ: 4
Комментарий оценки:
Спасибо.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60.10 от 27.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное