Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
Excel

Не работают двухбайтовые типы

24.03.2023, 17:42. Показов 2433. Ответов 34

Студворк — интернет-сервис помощи студентам
В инструкции от Майкрософт https://learn.microsoft.com/ru... ata-types/ есть 2ухбайтовые переменные в частности это Char и Short но у меня они не работают и не подсвечиваются. Можно ли их включить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.03.2023, 17:42
Ответы с готовыми решениями:

Двухбайтовые двоично-десятичные числа массива преобразовать в двухбайтовые двоичные
Помогите как решить задачу, очень нужно! Заранее спасибо! Двухбайтовые двоично-десятичные числа массива 20Н-2FН РПД преобразовать в...

Двухбайтовые двоичные числа массива преобразовать в двухбайтовые двоично десятичные
Задача заключается в: Двухбайтовые двоичные числа массива 20H-27H РПД преобразовать в двухбайтовые двоично десятичные. Числа массива меньше...

(МК51) Стек: Двухбайтовые BCD числа массива 20H-2FH РПД преобразовать в двухбайтовые двочиные массива 30H-3FH
Двухбайтовые двоично-десячитные числа массива 20H-2FH РПД преобразовать в двухбайтовые двочиные массива 30H-3FH. P.S. Программирование...

34
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
27.03.2023, 21:13  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Punkt5 Посмотреть сообщение
sheets(1).cells(20,3).FormulaR1C1
А что это за стиль написания кода когда идёт функция ставится точка потом опять функция потом опять точка? Обычно если речь идёт о методах класса или структуры то сначала раскрываются поля всей структуры или классов если есть вложенные а потом вызывается метод.
0
428 / 333 / 61
Регистрация: 29.06.2019
Сообщений: 493
27.03.2023, 23:00
Nexi99, откройте учебник, нажмите F1, спросите в Яндексе (Гугле)
F2 даже очень многое может рассказать

Не уподобляйтесь Ципиховичу.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
27.03.2023, 23:44  [ТС]
Цитата Сообщение от SergioJek Посмотреть сообщение
спросите в Яндексе (Гугле)
Форум скорее ближе к этому ответу. Просто хочеться как-то с лёту это схватить. С подобными ЯП опыта пока не было.

Добавлено через 1 минуту
Цитата Сообщение от Punkt5 Посмотреть сообщение
Да. И первым символом этой строки должно быть "=".
Типа: sheets(1).cells(20,3).FormulaR1C1="=SUM( RC2:RC[-1])"
Если в ячейке записана формула Сегодня() могу ли я функцией Mid получить строку для ActiveCell.FormulaR1C1?
0
1412 / 876 / 93
Регистрация: 08.02.2017
Сообщений: 3,730
Записей в блоге: 2
28.03.2023, 02:48
Цитата Сообщение от Nexi99 Посмотреть сообщение
Если в ячейке записана формула Сегодня() могу ли я функцией Mid получить строку для ActiveCell.FormulaR1C1?
А что мешает проверить? ) Сегодня() будет автоматически преобразованов в строку (тип bstring в с++). Mid$() примет только строку
0
Динохромный
1640 / 777 / 288
Регистрация: 22.12.2015
Сообщений: 2,432
29.03.2023, 11:59
Цитата Сообщение от Nexi99 Посмотреть сообщение
А что это за стиль написания кода когда идёт функция ставится точка потом опять функция потом опять точка?
Это не функция, а обращение к объекту, в конце - свойство объекта. Объект - Лист №1, конкретнее - его ячейка из 20 ряда и 3 колонки. Свойство - формула этой ячейки (а не скажем ее цвет).
Цитата Сообщение от Nexi99 Посмотреть сообщение
Обычно если речь идёт о методах класса или структуры то сначала раскрываются поля всей структуры или классов если есть вложенные а потом вызывается метод.
Хотите реализацию другого языка - используйте другой язык, в чем проблема. В VBA лучше изначально разделять объекты, методы и свойства. В вашей конструкции нет ни методов, ни функций.
0
1412 / 876 / 93
Регистрация: 08.02.2017
Сообщений: 3,730
Записей в блоге: 2
29.03.2023, 14:37
C какой-то стороны ТС прав, ведь по существу методы объектов (по иному экземпляров классов) это функции, т.е. такие штуки , которые принимают какие-либо параметры и возвращают определенный результат.
0
Динохромный
1640 / 777 / 288
Регистрация: 22.12.2015
Сообщений: 2,432
29.03.2023, 17:22
Цитата Сообщение от testuser2 Посмотреть сообщение
ведь по существу методы объектов (по иному экземпляров классов) это функции, т.е. такие штуки , которые принимают какие-либо параметры и возвращают определенный результат.
Ну при этом в VBA есть функции как таковые, как их тогда называть, и главное - зачем их называть по другому, если в VBA они уже названы так.
Собственно, можно их хоть горшком обозвать, главное в печь не ставить и не ждать, что собеседник обязательно поймет, что функция VBA в разговоре на самом деле - метод.
0
349 / 190 / 108
Регистрация: 01.04.2020
Сообщений: 538
29.03.2023, 17:56
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Хотите реализацию другого языка - используйте другой язык, в чем проблема. В VBA лучше изначально разделять объекты, методы и свойства. В вашей конструкции нет ни методов, ни функций.
Думаю, не надo TC-a запутывать. "В вашей кoнструкции" есть тoлькo объектная модель Excel:
Цитата Сообщение от Nexi99 Посмотреть сообщение
sheets(1).cells(20,3).FormulaR1C1
Выл бы другoй язык объектная модель oсталась бы та же - экселевская.
Кoгда я начинал с VBA дoлгo не пoнимал чтo oтнoсится к VBA и чтo к объектнoй модели Excel.
(сегoдня - немнoжкo пoнятнее)
0
Динохромный
1640 / 777 / 288
Регистрация: 22.12.2015
Сообщений: 2,432
29.03.2023, 18:44
Цитата Сообщение от elixi Посмотреть сообщение
"В вашей кoнструкции" есть тoлькo объектная модель Excel:
Повторюсь, в "вашей конструкции" есть объект и свойства, а методов и функций нет, независимо к чему вы их относите - к самому VBA или к модели приложения.
Цитата Сообщение от elixi Посмотреть сообщение
Выл бы другoй язык объектная модель oсталась бы та же - экселевская.
Ниже приведен кусок кода на Lisp, который из экселя забирает нужные данные в атокад и отрисовывает по ним чертеж. На мой взгляд, в части взаимодействия с Excel мало похоже на VBA.
Кликните здесь для просмотра всего текста


Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
(defun C:EXM ( / DESRNG EXCELAPP FILEPATH NEXTRNG SELRNG SHT SHTNUM WBK stroka colon)
  (setq FilePath (getfiled    "Выберите файл с прайсами :"
         (getvar "dwgprefix")
             "xlsx"
             16
             )
  )
;;;  (setq FilePath (findfile "C:\\AUTOLISP\\TEST1.xls"));for debug only
  (setq ShtNum (getstring t "\nВведите имя листа <Лист1>: \n"))
  (if (eq ShtNum "")
    (setq ShtNum "Лист1")
  )
  (setq ExcelApp (vlax-get-or-create-object "Excel.Application"))
  (vla-put-visible ExcelApp :vlax-true)
  (setq Wbk (vl-catch-all-apply 'vla-open (list (vlax-get-property ExcelApp "WorkBooks") FilePath)))
  (vlax-invoke-method Wbk 'Activate)
  (setq Sht (vl-catch-all-apply 'vlax-get-property (list (vlax-get-property Wbk "Sheets") "Item" ShtNum)))
  (vlax-invoke-method Sht "Activate")
 
  ;; <действия в файле>
  (IN_WRITE-EXCEL 3 23 (/ qob 1000))
  (IN_WRITE-EXCEL 3 24 (/ qob 1000))
  (setq stroka 1
        colon 1
    i 4
    ind 1
    listob nil
  )
  (while (< i 777)
    (setq stroka i)
    ;(setq el1 (caddr (car (IN_READ-EXCEL Stroka Colon Param))))
    (setq el3 (car (IN_READ-EXCEL Stroka  25 Param)))
    (if (and (/= el3 "") (/= el3 "0"))
      (progn
        (setq el2 (car (IN_READ-EXCEL Stroka 1 Param)))
        (if (/= el2 "")
      (progn
        (setq el1 ind    
              el4 (car (IN_READ-EXCEL Stroka 19 Param))
              el5 (car (IN_READ-EXCEL Stroka 4 Param))
              el6 (car (IN_READ-EXCEL Stroka 5 Param))
              el7 (car (IN_READ-EXCEL Stroka 18 Param))
          el8 (car (IN_READ-EXCEL Stroka 36 Param))
          el9 (car (IN_READ-EXCEL Stroka 37 Param))
                  el10 (car (IN_READ-EXCEL Stroka 18 Param)) 
                  el (list el1 el2 el4 el5 el6 el7 el8 el9 el10)        
                  listob (reverse (cons el (reverse listob)))
          ind (1+ ind)
        )
      )
          (setq i 778)
        )
      )
      (if (= el3 "")
       (setq i 788)
      )
    )
    (setq i (1+ i))
  )
 
  (setq i1 6
    listdiastand nil
  )
  (while (< i1 777)
    (setq el (car (IN_READ-EXCEL i1 27 Param)))
    (if (= el "")
      (setq i1 778)
      (setq listdiastand (reverse (cons (atoi el) (reverse listdiastand))))
    )
    (setq i1 (1+ i1))    
  )
 
  
  ;; <действия в файле> 
  (vl-catch-all-apply 'vlax-invoke-method (list Wbk "Close" :vlax-true))
  (vl-catch-all-apply 'vlax-invoke-method (list ExcelApp "Quit"))
  (mapcar
    (function (lambda (x)
        (if (not (vlax-object-released-p x))
          (vlax-release-object x)
        )
          )
    )
    (list DesRng NextRng SelRng Sht Wbk ExcelApp); обязательно в обратном порядке
  )
  (setq    DesRng nil
    NextRng nil
    SelRng nil
    Sht nil
    Wbk nil
    ExcelApp nil
  )
  (gc)
  (gc)
  (gc)
  (prin1)
)


С доступом к xlsx через Java приходилось ковыряться - да, аналогия с VBA прослеживается, но сказать что это одна объектная модель - и близко не так, и если такой код вставить в Java - разумеется он работать не будет.

В Автокад например встроено сразу два языка - VBA и Lisp, и разумеется объектная модель dwg файла у них разная. При этом если программно обратится к мтексту через VBA, то удалять принудительные теги форматирования нужно "ручками" (я вот алгоритм достаточно долго вымерял), а если через VB.NET зайти, то там это стандартный метод объекта из коробки - не надо ковыряться и думать какие теги можно убрать из текста, а какие нет. А в VBA такого метода у этого объекта нет. Соответственно в Lisp вообще все по другому, там знания VBA абсолютно неприменимы.



Свойства объектной модели офиса обновляются регулярно, спецификации доступны на оффсайте:
2016 версия
2019 версия
0
1412 / 876 / 93
Регистрация: 08.02.2017
Сообщений: 3,730
Записей в блоге: 2
30.03.2023, 07:47
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
С доступом к xlsx через Java приходилось ковыряться
Интересно как это в выглядит в Java. Лисп конечно с беглогов всгляда выглядит "удобным" до всратости ). В VB6 довольно просто, если в референсах подключить тупо "ПутьДоЭкселя\EXCEL.EXE" становятся доступны все объекты Excel. Если выполнить, допустим Excel.Appliction.Visible = true - автоматически создается процесс Excel с видимым окном.. Проверил на 32bit версии офиса.
0
Динохромный
1640 / 777 / 288
Регистрация: 22.12.2015
Сообщений: 2,432
30.03.2023, 08:09
testuser2, да уже столько времени прошло.
Подключается стандартная библиотека, Apache POI (вроде бы и другие есть, но эта самая ходовая), становятся доступны классы - доступа к книге, листу и тд.
Насколько я помню, чтобы получить данные из ячейки, нужно знать, что в ней хранится - строка, число, дата или формула, и метод считывания для каждого варианта будет свой. Некая аналогия с vba у методов наверное просматривается, но мне было тяжело перестроиться. Ну я в дебри то и не лез, так по верхам полазил.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
30.03.2023, 23:42  [ТС]
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
Насколько я помню, чтобы получить данные из ячейки, нужно знать, что в ней хранится - строка
В 18ом https://www.cyberforum.ru/post16826947.html посте человек пишет что строки. Если разбираться конкретно то нужно свой интерпретатор делать читаем строку сравниваем каждый символ и выводим результат что там записано. Может функции готовые для этого есть. Я пытаюсь сделать алгоритм как формулу превратить в статическое значение. Предложили варианты https://www.planetaexcel.ru/fo... age1244547 но админ пишет что есть какие-то ограничения получается что внутри типовой функции эти функции вызвать нельзя или что. Последний способ пока не проверил сильно перегружен буду ещё тестировать.
0
малоболт
1328 / 510 / 213
Регистрация: 30.01.2020
Сообщений: 1,244
31.03.2023, 01:31
Цитата Сообщение от Nexi99 Посмотреть сообщение
В 18ом https://www.cyberforum.ru/post16826947.html посте человек пишет что строки
Вы попробуйте всё же внимательно читать. В том посте человек пишет, что формулы в ячейках - это всегда строки. Тогда как
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
чтобы получить данные из ячейки, нужно знать, что в ней хранится - строка, число, дата
это о значении в ячейке. Я вам ещё чуть выше писал, что строка, которую вы помещаете в FormulaR1C1 должна начинаться с "=", если вам надо, чтобы это была именно формула. Если же вы поместите туда вместо "=TODAY()" вашу любимую строку "СЕГОДНЯ()", то значением данной ячейки и будет строка "СЕГОДНЯ()", так что mid() к ней вполне можно применять без проблем - можно получить "ЕГО". Можно "ДНЯ" или "НЯ()" - зависит от того, что вам нужно.
Начните уже
1. читать
и
2. осмысливать
даваемые вам ответы.
0
Динохромный
1640 / 777 / 288
Регистрация: 22.12.2015
Сообщений: 2,432
31.03.2023, 09:47
Цитата Сообщение от Nexi99 Посмотреть сообщение
Если верить этому посту https://www.planetaexcel.ru/fo... z-yacheyki то ActiveCell.FormulaR1C1 имеет строковый тип.
Если почитать справку: https://learn.microsoft.com/ru... /overview/ , а именно вбить в фильтр "FormulaR1C1" и ознакомится с описанием, то можно достоверно узнать тип свойства и сделать однозначный вывод - стоит ли верить указанному вами посту.
Цитата Сообщение от Nexi99 Посмотреть сообщение
Сообщение от Dinoxromniy
Насколько я помню, чтобы получить данные из ячейки, нужно знать, что в ней хранится - строка
Угу, это написано про Java, причем в реализации конкретной (но не единственной) библиотеки для работы с xlsx файлами. В VBA для того, чтобы считать значение из ячейки, знать его тип не нужно, и свойство для этого предусмотрено единственное (если нужно - тип значения можно распознать после того, как его получил, а не до того).
Цитата Сообщение от Nexi99 Посмотреть сообщение
Если разбираться конкретно то нужно свой интерпретатор делать
Нужно сначала задачу сформулировать, а потом уже бежать поспешая писать интерпретаторы.
Цитата Сообщение от Nexi99 Посмотреть сообщение
Я пытаюсь сделать алгоритм как формулу превратить в статическое значение.
ну вам же и написали: cells(1,1).value=cells(1,1).value, вы скупо написали "не работает" и дальше тонны оффтопного текста. Как именно не работает, результат какой - что вы писали в ячейку, что ожидали от работы кода, какой результат получили, какие ожидания не сбылись напишите.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
31.03.2023, 18:25  [ТС]
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
ано про Java, причем в реализации конкретной (но не единственной) библиотеки для работы с xlsx файлами. В VBA для того, чтобы считать значение из ячейки, знать его тип не нужно,
значит не нужно будем считать что это грубо говоря развитый высокоуровневый язык.
Цитата Сообщение от Dinoxromniy Посмотреть сообщение
ну вам же и написали: cells(1,1).value=cells(1,1).value, вы скупо написали "не работает" и дальше тонны оффтопного текста. Как именно не работает, результат какой - что вы писали в ячейку, что ожидали от работы кода, какой результат получили, какие ожидания не сбылись напишите.
Да не работает пишет ошибка в коде, наверное лучше и тут тему открыть а может и там ещё одну и видео снять. Там были ещё способы был некий странный цикл, но я не понял зачем такой навороченный цикл типа For Each да и считать я буду не все ячейки сразу а по одной. Вы уже не пишите про это в этой теме я новую открою и там ещё есть способы я не всё проверил ещё.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2023, 18:25

Некорректно работают типы переменных
Добрый день. Не судите строго я начинающий. Дело такое: написана программа для attiny13 в коде вижен, тестируется в протеусе АБСОЛЮТНО...

Почему типы float и double не работают с dynamic?
Почему типы float и double не работают с dynamic?

Микропроцессор (KP580). Перемножить двухбайтовые числа
умножить двухбайтовые числа. Ассемблер (KP580)

Как с помощью getline считать двухбайтовые символы?
В общем надо считать строку из файла. Если однобайтовая - всё ок. Как только wchar_t - начинается дурдом. getline в упор не видит какой...

Задать одномерный массив (элементы массива – двухбайтовые), состоящий из 40 элементов
Здравствуйте, буду премного благодарен, если поможете с данной задачей. Задать одномерный массив (элементы массива – двухбайтовые),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru