Вставляю число в ячейку документа excel макросом.
Функция забирает из массива типа Single число, передает в функцию печати (вставки в ячейку с нужным адресом) с типом данных Variant и уже она печатает.
Вводимое число получается "1,286", после ввода в ячейке оказывается число "1,25600004196166"
вопрос:
1) как убрать хвостовые символы без применения формата ячейки, в т.ч. текстового,
2) почему они образуются?
Преобразование типов данных гуглил, в тип вариант из сингла переводится прозрачно.
Все переменные объявленны с указанием типов данных.
полученное число будет использоваться в вычислениях на странице с использование формул экселя.
Компьютер не подключен к интернету, винда поставленна за 20 минут до начала работ, офис за 5.
П.С. Это не домашняя работа. Это описание .. момента, который мне кажется выносом мозга. Возможно, я не учел какой-то мелочи.
Примечание:
скриншоты:
функция печати/вставки в отладчике:
http://i58.fastpic.ru/big/2014/0107/68/4401f65a1ca34548a7f9dafe4075aa68.png
результат в документе excel:
http://i58.fastpic.ru/big/2014/0107/b5/eb0e8884e384b270b179ce8fd97ecbb5.png
Примечание:
извиняюсь, ошибся. Изначальное число 1,256. Конечно же.
Функцией Round (округление) пользоваться пытался. Как штатной, так и такой:
Function Round2(number As Single, count As Byte) As Single
Round2 = Int(number * 10 ^ count + 0.5) / 10 ^ count
End Function
без толку.
Примечание:
дык, оно и выводится текстом. тип сингл передается в процедуру, где тип переменной - variant. Там еще записать в переменную типа стринг?
Авдругу: ты невнимательно читал вопрос. Round я уже применял.
--------
Проблема собственно, решилась. Костыль в виде самописной функции Round2, текст которой приведён выше, но тип данных выходной не Single - а Variant. И результат уже передается в процедуру вывода, где оно хранится в Variant'е.
Это костыль, но он работает. Может быть кто-то сможет ответить почему так происходит и что я делаю не так, пытаясь выполнить задачу "правильно" ?
Примечание:
Обрезка обрезкой, но мне хотелось бы сделать правильное округление. И вообще, хотелось бы понять почему VB тут работает неправильно?
Примечание:
Алексей, именно так я и сделал методом тыка.
Но мне интересно, почему нельзя делать простым способом, напрямую.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.