Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337

В ворде добавить CheckBox

04.05.2018, 19:02. Показов 3340. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте, в цикле добавляю его кодом:
Visual Basic
1
2
3
4
5
For i = 0 To Количество_найденных_ссылок - 1
        Debug.Print Split_текст_всех_найденных_ссылок(i + 1)
        Selection.TypeText Text:=i + 1 & "-" & Split_текст_всех_найденных_ссылок(i + 1) & "-"
        Selection.InlineShapes.AddOLEControl ClassType:="Forms.CheckBox.1" & vbCrLf
    Next i
ругается, на последней строке в цикле говорит об ошибке 4218 - Не совпадение типа, как правильно добавить? спасибо

Добавлено через 1 час 28 минут
магнитофон рулит
Visual Basic
1
2
3
4
5
6
7
For i = 0 To Количество_найденных_ссылок - 1
        Debug.Print Split_текст_всех_найденных_ссылок(i + 1)
        Selection.TypeText Text:=i + 1 & "-" & Split_текст_всех_найденных_ссылок(i + 1) & "-"
        Selection.InlineShapes.AddOLEControl ClassType:="Forms.CheckBox.1"
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        Selection.TypeParagraph
    Next i
Добавлено через 1 час 39 минут
при таком подходе не понятно как добавленными CheckBox пользоваться?, ведь обработчики их выбора в коде не добавились сами по себе...

Добавлено через 13 минут
программно можно в коде добавить нужное количество
Visual Basic
1
2
3
Private Sub CheckBox1_Click()
 
End Sub
??
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2018, 19:02
Ответы с готовыми решениями:

Добавить поле MACROBUTTON в Ворде
здравствуйте, мне нужно на выделенный текст его добавить и чтобы выделенный текст был текстом поля, делаю так Selection.Fields.Add...

Добавить checkbox
есть вот такой скрипт $(function() { $( "#slider-range-max" ).slider({ range: "max", min: 0, max: 2000, ...

Добавить Checkbox в Contextmenustrip
Доброе время суток. Подскажите пожалуйста как сделать так что бы при в contextmenustrip в одном из разделов был checbox ? Или просто...

45
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
08.05.2018, 08:46
Студворк — интернет-сервис помощи студентам
Ципихович Эндрю,
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
а как программно с него снимать\ставить галку?
activesheet.oleobjects(Name or number).object=True/False (это в экселе)
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
08.05.2018, 09:44  [ТС]
Цитата Сообщение от Burk Посмотреть сообщение
это в экселе
пока в Ворд переделать не удалось...

Добавлено через 34 минуты
ещё какого зверя обнаружил - ни разу с ним дела не имел
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub InsertInteractiveCheckbox()
Dim oFld As Word.Field
Dim oRng As Word.Range
  Set oFld = Selection.Fields.Add(Range:=Selection.Range, Type:=wdFieldEmpty, _
             Text:="MACROBUTTON ToggleCheckbox", PreserveFormatting:=False)
  Set oRng = oFld.Code
  oRng.Collapse wdCollapseEnd
  oRng.InsertSymbol 254, "WingDings"
lbl_Exit:
  Exit Sub
End Sub
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
08.05.2018, 10:10
Ципихович Эндрю,
Visual Basic
1
ActiveDocument.InlineShapes(Имя/Номер).OLEFormat.Object = True/False
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
08.05.2018, 15:25
Ципихович Эндрю, как и обещал, посылаю примерчик с чеками на листе экселя. Читайте пояснения в ClassModule. Будут вопросы, валяйте
Вложения
Тип файла: xls CheckOnSh.xls (49.0 Кб, 5 просмотров)
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
08.05.2018, 16:01
Посмотрел уж тоже,


а что у вас нет инструкции RaiseEvent, тем более в классе
классы вообщето обмениваются событииями

Добавлено через 1 минуту
Visual Basic
1
2
3
4
5
6
7
8
Option Explicit
Public WithEvents CheckResp As MSForms.CheckBox
 
Public Event qwerty(value)
 
Private Sub CheckResp_Click() 'пример
    RaiseEvent qwerty(1)
End Sub
Добавлено через 1 минуту
когда доходит до... RaiseEvent

это будет сообщение тому модулю, в котором был порожден этот класс

Добавлено через 18 минут
Ципихович Эндрю, конечно не понимает что делает, это его такое свойство
он может натыкать разные контролы в текстах, и потом жаловаться что работает не совсем так как должно

он же ведь именно ваш код возьмет, и будет кричать что работает както не так )))

Добавлено через 8 минут
Ребята!
Как динамически добавить контрол в ворде. (именно на странице) неохото опять все ворошить

я сам напишу проект, в котором-бы была возможность создать несколько ch-box -ов и обмениваться с ними инфой
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
08.05.2018, 19:53  [ТС]
Цитата Сообщение от fever brain Посмотреть сообщение
я сам напишу проект, в котором-бы была возможность создать несколько ch-box -ов и обмениваться с ними инфой
спасибо
да это работает
Visual Basic
1
2
3
4
5
For i = 1 To ActiveDocument.InlineShapes.Count
        ActiveDocument.InlineShapes(i).OLEFormat.Object.Enabled = True
        ActiveDocument.InlineShapes(i).OLEFormat.Object = True
        ActiveDocument.InlineShapes(i).OLEFormat.Object = False
    Next i
не понимаю почему днём не работало, видимо глаз замылился, поспал, пошло дело)) спасибо
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
09.05.2018, 12:29
fever brain, и на зачем мне эта инструкция, если без неё до сих пор обходился?
Цитата Сообщение от fever brain Посмотреть сообщение
а что у вас нет инструкции RaiseEvent, тем более в классе
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
09.05.2018, 16:21
Не знаю что ты там сделал (можно на ты ?) вижу что у тебя передачя сообщений идет както криво, и тем-не менее
выдало нужный результат, вот смотри

в класе должна быть переменная RaiseEvent VAR([аргумент, или много аргументов])

теперь если ты этот класс пользуешь еще гдето то пишешь не кнопку (MSForms.CheckBox)
а ссылаешься на класс ! понятно ?

Добавлено через 4 минуты
в листе например, пишешь
dim WithEvents Var as MyCLASS (ну тоесть тот клас, который создан)
а дальше уже используй хоть тысячу этих классов

и еще, первое событие класса это его инициализация, даже если мы это запустим впервые, класс расставит все объекты и присвоет переменным ссылки
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
09.05.2018, 16:24  [ТС]
fever brain, здравствуйте, будет пример в Ворде? (хотелось бы к празднику)
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
09.05.2018, 16:28
Так и быть проект пришлю, подожди немного, иначе эта тема не закроется ))
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
09.05.2018, 20:23
Странно, при создании новых контролов класс не видит события CheBox-ов.

но если открыть книгу заново (там у меня присваивается массив классов Set chk(i) = New Class1 ) то все вроде нормально

в ворде тоже самое будет, может у меня версия офиса сильно устарела (2003)
Миниатюры
В ворде добавить CheckBox  
Вложения
Тип файла: xls Лист Microsoft Excel.xls (69.0 Кб, 6 просмотров)
1
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
09.05.2018, 20:50  [ТС]
попробую завтра в Ворд переделать
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
09.05.2018, 20:52
Работоть - то работает, только надо подумать почему придется перезапускать книгу
если ктото хочет посоветовать мне написать Set chk(i) = Nothing не поможет опробованно уже
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
09.05.2018, 21:04  [ТС]
не понял у каждого контрола по два имени?:
ChBox1
CheckBox1
это зачем так сделано?
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
09.05.2018, 21:20
Нет, имя там одно, там присваевается другое имя
Visual Basic
1
2
3
4
5
6
Public Sub SetCh(ByVal ch As Object, i&)
    On Error Resume Next
    ch.Name = "ChBox" & i
    ch.Object.Caption = ch.Name
    Set CheckBoxXXX = ch.Object
End Sub
Добавлено через 5 минут
в процедуре два аргумента, ch - это CheckBox а i это его индекс
при инициализации трех классов каждый реагирует на свое событие


Visual Basic
1
2
3
4
5
6
7
8
9
10
Public Sub Workbook_Open()
    Dim v, i&
    For Each v In ActiveSheet.OLEObjects
        If Left(v.Name, 5) = "ChBox" Then
            i = i + 1
            Set chk(i) = New Class1 'Инициализация нового класса
            chk(i).SetCh v, i
        End If
    Next
End Sub
Добавлено через 7 минут
А почему спросили, вы запустили макрос СоздатьЧеки
и все имена стали CheckBox1 ?

должны были создасться в таком порядке
ChBox1
ChBox2
ChBox3
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
09.05.2018, 21:26  [ТС]
нет
потому, что родина начинается отсюда
Цитата Сообщение от fever brain Посмотреть сообщение
Workbook_Open
стало интересно
Цитата Сообщение от fever brain Посмотреть сообщение
If Left(v.Name, 5) = "ChBox" Then
а если нет, то что,
вот и выяснил, что иначе CheckBox*
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
09.05.2018, 21:30
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
что иначе CheckBox
Если имя измененно, и книга (или док) сохранен то оно им и останется, тоесть программно изменять имена этих контролов вполне можно
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
09.05.2018, 21:37  [ТС]
Цитата Сообщение от fever brain Посмотреть сообщение
макрос СоздатьЧеки
без него можно обойтись, если они уже созданы?
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
09.05.2018, 21:45
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
без него можно обойтись, если они уже созданы?
Ну конечно-же, для этого у меня и обрабатывается процедура открытия книги, и в ней инициализируются классы
а создание новых чеков, это я для наглядности написал

Ну вы суть надеюсь поняли, иниализация трех классов каждый из них имеет у себя свой чекбокс
класс это тот-же самый модуль только существует возможность его дублировать как обычную переменную
1
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
10.05.2018, 05:05
fever brain, ничего странного нет, процедура инициализации запускается из модуля Эта книга. Если добавили чек, то запустите макрос Ini вручную или поставьте кнопку для запуска макроса

Добавлено через 5 минут
fever brain, ваши чеки похожи на мои и я подумал, что вы пишете по поводу моего примера. Хотя у вас тоже инициал в Эта книга
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2018, 05:05

Как добавить на форму checkbox
подскажите как добавить элемент checkbox или любой другой элемент управления (commandbutton, radiobutton, combobox и т.д.) в форму из vba.

Как добавить CheckBox в ComboBox
Здравствуйте, как можно добавить CheckBox в ComboBox, чтобы при раскрытии списка ComboBox внутри было заданное количество CheckBox?

Несколько выбранных checkbox добавить в базу
Добрый вечер программисты, мне нужна помочь. я делаю сайт для заполнение анкеты. данные добавляются в базу phpmyadmin, у меня все данные...

Как добавить несколько checkbox на groupbox
При добавлении более чем одного checkbox на groupbox студия пишет об ошибке разметки. Подскажите, как добавить несколько checkbox на...

Добавить checkbox на верхний header в datagridview
Добрый день! Подскажите, как можно добавить checkbox на верхний header в обычном datagridview. Пример: При...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru