Вопрос № 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 (статус: Практикант)
Ответ отправлен: 28.09.2007, 11:08
Отвечает: AlexanderZh
Здравствуйте, Джефф!
Дело в том, что right это функция для работы со стороками и сначала она преобразует ваше число в строку, затем отрезает 2 правых символа и возвращает их. В вашей ситуации я бы сделал так:
int(summa*100)-int(summa)*100
Ответ отправил: 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
--------- От каждого по способностям, каждому по труду
Здравствуйте!
Есть проблемма на 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
Отвечает: AlexanderZh
Здравствуйте, Берговин Вдадимир !
Попробуйте обойти это ограничение так:
Все переменные - variant (этот тип может содержать 12 байтный подтип Decimal)
Все значения присваивать через конвертирование к этому типу (m=CDec(111111) и т.д.)
Разрядности хватить должно - диапазон значений
+/-79 228 162 514 264 337 593 543 950 335
Ответ отправил: 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). Для присваивания иконок программным образом хотелось бы сначала знать, какой номер принадлежит какой иконке.
Спасибо.
Отвечает: 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.
Спасибо Всем!
Отвечает: 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 Комментарий оценки: Спасибо.