формат данных таблицы

Автор Тема: формат данных таблицы  (Прочитано 7014 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн wavawАвтор темы

  • ADN OPEN
  • Сообщений: 21
  • Карма: 0
формат данных таблицы
« : 21-05-2017, 11:14:47 »
здравствуйте.
подскажите, пожалуйста, как привести формат ячеек таблицы к виду "2 цифры после запятой"

Код - Visual Basic [Выбрать]
  1. 'Добавляем таблицу
  2.        pptabl(0) = pGaz(0) - 1.85 * MyScale
  3.         pptabl(1) = pp(1) ' - 75 * MyScale
  4.        Set MyTable = ThisDrawing.ModelSpace.AddTable(pptabl, 5, 1, 1#, 1#)
  5.         MyTable.StyleName = "V"
  6.         MyTable.SetColumnWidth 0, 3.7 * MyScale
  7.         MyTable.SetRowHeight 0, 15 * MyScale
  8.         MyTable.SetRowHeight 1, 15 * MyScale
  9.         MyTable.SetRowHeight 2, 15 * MyScale
  10.         MyTable.SetRowHeight 3, 15 * MyScale
  11.         MyTable.SetRowHeight 4, 15 * MyScale
  12.         MyTable.SetTextHeight 0, 2# * MyScale
  13.         MyTable.SetTextHeight 1, 2# * MyScale
  14.         MyTable.SetTextHeight 2, 2# * MyScale
  15.         MyTable.SetTextHeight 3, 2# * MyScale
  16.         MyTable.SetTextHeight 4, 2# * MyScale
  17.         MyTable.SetTextRotation 0, 0, acDegrees090
  18.         MyTable.SetTextRotation 1, 0, acDegrees090
  19.         MyTable.SetTextRotation 2, 0, acDegrees090
  20.         MyTable.SetTextRotation 3, 0, acDegrees090
  21.         MyTable.SetTextRotation 4, 0, acDegrees090
  22.        
  23.         'Устанавливаем невидимость границ ячеек
  24.        MyTable.SetGridVisibility acHorzBottom, acTitleRow, False
  25.         MyTable.SetGridVisibility acHorzTop, acTitleRow, False
  26.         MyTable.SetGridVisibility acVertLeft, acTitleRow, False
  27.         MyTable.SetGridVisibility acVertRight, acTitleRow, False
  28.         MyTable.SetGridVisibility acHorzInside, acTitleRow, False
  29.         MyTable.SetGridVisibility acVertInside, acTitleRow, False
  30.        
  31.         MyTable.SetGridVisibility acHorzBottom, acHeaderRow, False
  32.         MyTable.SetGridVisibility acHorzTop, acHeaderRow, False
  33.         MyTable.SetGridVisibility acVertLeft, acHeaderRow, False
  34.         MyTable.SetGridVisibility acVertRight, acHeaderRow, False
  35.         MyTable.SetGridVisibility acHorzInside, acHeaderRow, False
  36.         MyTable.SetGridVisibility acVertInside, acHeaderRow, False
  37.        
  38.         MyTable.SetGridVisibility acHorzBottom, acDataRow, False
  39.         MyTable.SetGridVisibility acHorzTop, acDataRow, False
  40.         MyTable.SetGridVisibility acVertLeft, acDataRow, False
  41.         MyTable.SetGridVisibility acVertRight, acDataRow, False
  42.         MyTable.SetGridVisibility acHorzInside, acDataRow, False
  43.         MyTable.SetGridVisibility acVertInside, acDataRow, False
  44.         'Конец
  45.        
  46.         'Запись значений в ячейки таблицы
  47.        MyTable.SetCellValue 0, 0, "-"
  48.         MyTable.SetCellValue 1, 0, CSng(отметкаЗемляФактическая)
  49.         MyTable.SetCellValue 2, 0, CSng(отметкаДноТраншеи)
  50.         MyTable.SetCellValue 3, 0, CSng(отметкаВерхаТрубы)
  51.         MyTable.SetCellValue 4, 0, CSng(глубинаТраншеи)
  52.         'конец



Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: формат данных таблицы
« Ответ #1 : 21-05-2017, 15:15:25 »
Это вопрос на знание VBA, а не AutoCAD.
Для преобразования числа в строку есть функция FormatNumber.
Пример:
Код - Visual Basic [Выбрать]
  1. Sub TestFoprmat()
  2. s = FormatNumber(123.12345, 2)
  3. MsgBox (s)
  4. End Sub

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн wavawАвтор темы

  • ADN OPEN
  • Сообщений: 21
  • Карма: 0
Re: формат данных таблицы
« Ответ #2 : 21-05-2017, 20:21:25 »
проблема не в самом ВБА, а именно в том, что по дефолту ячейки таблицы получаются такие, что "округляют" до 6 знака после запятой. хоть значения попадают ровно с округлением до сотых.

Код - Visual Basic [Выбрать]
  1. 'Запись значений в ячейки таблицы
  2.        s = FormatNumber(отметкаЗемляФактическая, 2)
  3.         MsgBox (s)
  4.         MyTable.SetCellValue 0, 0, "-"
  5.         MyTable.SetCellValue 1, 0, CSng(s)
  6.         MyTable.SetCellValue 2, 0, CSng(отметкаДноТраншеи)
  7.         MyTable.SetCellValue 3, 0, CSng(отметкаВерхаТрубы)
  8.         MyTable.SetCellValue 4, 0, CSng(глубинаТраншеи)
  9.         'конец




Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: формат данных таблицы
« Ответ #3 : 21-05-2017, 20:40:24 »
А если вместо
Код - Visual Basic [Выбрать]
  1. MyTable.SetCellValue 1, 0, CSng(s)
ты напишешь
Код - Visual Basic [Выбрать]
  1. MyTable.SetCellValue 1, 0, s
?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн wavawАвтор темы

  • ADN OPEN
  • Сообщений: 21
  • Карма: 0
Re: формат данных таблицы
« Ответ #4 : 21-05-2017, 21:20:24 »
ошибки не последовало, но никаких значений в таблицу не вписалось - пустые ячейки получились

Код - Visual Basic [Выбрать]
  1. 'Запись значений в ячейки таблицы
  2.        s = FormatNumber(отметкаЗемляФактическая, 2)
  3.         'MsgBox (s)
  4.        MyTable.SetCellValue 0, 0, "-"
  5.         MyTable.SetCellValue 1, 0, s

Отмечено как Решение wavaw 21-05-2017, 23:59:09

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: формат данных таблицы
« Ответ #5 : 21-05-2017, 22:15:26 »
А если вместо
Код - Visual Basic [Выбрать]
  1. MyTable.SetCellValue 1, 0, s
Код - Visual Basic [Выбрать]
  1. MyTable.SetText 1, 0, s
?
Ну и для других ячеек аналогично.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение