Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 28

Макрос, который в зависимости от выбора должен создавать заполненную таблицу или текст

06.11.2012, 20:03. Показов 2840. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите! Нужно в бэсике создать макрос, который в зависимости от выбора должен создавать заполненную таблицу или текст... Поправьте, что я делаю не так

Visual Basic
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
Private Sub Document_Open()
Me.ComboBox1.AddItem "1"
Me.ComboBox1.AddItem "2"
End Sub
 
Private Sub ComboBox1_Change()
Select Case Me.ComboBox1.Value
 
    Case "1"
        ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:=5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
        ActiveDocument.Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables.Cell(1, 2).Range.Text = "Фамилия"
        ActiveDocument.Tables.Cell(1, 3).Range.Text = "Имя"
        ActiveDocument.Tables.Cell(1, 4).Range.Text = "Отчество"
        ActiveDocument.Tables.Cell(1, 5).Range.Text = "данные"
        
        ActiveDocument.Tables.Cell(2, 1).Range.Text = "1"
        ActiveDocument.Tables.Cell(2, 2).Range.Text = "Иванов"
        ActiveDocument.Tables.Cell(2, 3).Range.Text = "Иван"
        ActiveDocument.Tables.Cell(2, 4).Range.Text = "Иванович"
        ActiveDocument.Tables.Cell(2, 5).Range.Text = "1000"
        
        ActiveDocument.Tables.Cell(3, 1).Range.Text = "2"
        ActiveDocument.Tables.Cell(3, 2).Range.Text = "Сидоров"
        ActiveDocument.Tables.Cell(3, 3).Range.Text = "Сидор"
        ActiveDocument.Tables.Cell(3, 4).Range.Text = "Сидорович"
        ActiveDocument.Tables.Cell(3, 5).Range.Text = "500"
        
    Case "2"
        Selection.TypeText Text:="Текст"
End Select
End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2012, 20:03
Ответы с готовыми решениями:

Написать макрос, который должен удалять текст всех ячеек выделенной области, если он удовлетворяет условию
Доброго времени суток.) Есть проблема с написанием макроса в экселе. :с Макрос MTextClear должен удалять текст всех ячеек выделенной...

VBA - Написать макрос, который должен удалять текст всех ячеек выделенной области, если он удовлетворяет условию
Здравствуйте, помогите, пожалуйста, с написание макроса. Макрос MTextClear должен удалять текст всех ячеек выделенной области, если он...

Установить или очистить текст в TextBox в зависимости от выбора в ComboBox
Добрый день! Подскажите пожалуйста,можно ли сделать так: есть какой то comboBox.В нем 2 строки -ввод автоматически - ввод вручную ...

5
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
06.11.2012, 20:23
Два варианта обращения к вставленной таблице:

1 вариант. Обращение к таблице с помощью переменной:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Procedure_1()
 
    Dim oTable As Word.Table
    
    'Вставляем таблицу в документ и даём ей имя oTable.
    'Через это имя можно воздейстовать на таблицу.
    Set oTable = ActiveDocument.Tables.Add( _
        Range:=Selection.Range, NumRows:=3, NumColumns:=5, _
        DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed)
    
    oTable.Cell(1, 1).Range.Text = "№"
    
End Sub
2 вариант. Обращение к таблице с помощью объекта "Selection":
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Procedure_2()
 
    'Вставляем таблицу в документ.
    ActiveDocument.Tables.Add _
        Range:=Selection.Range, NumRows:=3, NumColumns:=5, _
        DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
 
    'Курсор будет находиться внутри таблицы.
    'Поэтому для обращения к таблице можно использовать объект Selection.
    'Tables (1) - в скобках 1, т.к. выделено может быть несколько таблиц.
    'Если выделена только одна таблица, то всё-равно нужно указывать в скобках 1.
    Selection.Tables(1).Cell(1, 1).Range.Text = "№"
    
End Sub
1
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 28
06.11.2012, 21:12  [ТС]
Спасибо, все заработало ) А можно еще сделать так, чтобы сам объект ComboBox1 после выбора в нем не исчезал???
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
06.11.2012, 21:41
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Procedure_1()
 
    'Вставляем в конец документа пустой абзац.
    '13 - это порядковый номер знака абзаца в таблице ANSI.
    ActiveDocument.Content.InsertAfter Chr(13)
    
    'Вставляем в конец документа таблицу.
    
    'ActiveDocument.Range.End - это конец документа.
    'Но в конце документа есть непечатаемый символ и после него нельзя вставить таблицу.
    'Поэтому нужно отнять 1.
    ActiveDocument.Tables.Add _
            Range:=ActiveDocument.Range(Start:=ActiveDocument.Range.End - 1, _
                End:=ActiveDocument.Range.End - 1), NumRows:=3, NumColumns:=5, _
            DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
    
    'В этом случае можно использовать третий способ обращения к таблице -
    'по порядковому номеру таблицы в документе.
    'При вставке таблицы в конец документа, она будет последней.
    ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
    
End Sub
Примечание: в вашем коде ComboBox исчезал, т.к. вы прямо в него вставляли таблицу.
1
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 28
07.11.2012, 00:37  [ТС]
Все равно исчезает
Visual Basic
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
Private Sub ComboBox1_Change()
Select Case Me.ComboBox1.Value
 
    Case "1"
    
        Selection.WholeStory
        Selection.Delete Unit:=wdCharacter, Count:=1
        
        ActiveDocument.Tables.Add _
            Range:=ActiveDocument.Range(Start:=ActiveDocument.Range.End - 1, _
                End:=ActiveDocument.Range.End - 1), NumRows:=3, NumColumns:=5, _
            DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixe
            
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 2).Range.Text = "Фамилия"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 3).Range.Text = "Имя"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 4).Range.Text = "Отчество"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "данные"
        
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
        ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
07.11.2012, 07:48
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub ComboBox1_Change()
    
    ActiveDocument.Content.InsertAfter Chr(13)
    ActiveDocument.Tables.Add _
            Range:=ActiveDocument.Range(Start:=ActiveDocument.Range.End - 1, _
                End:=ActiveDocument.Range.End - 1), NumRows:=3, NumColumns:=5, _
            DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
    ActiveDocument.Tables(ActiveDocument.Tables.Count).Cell(1, 1).Range.Text = "№"
 
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2012, 07:48
Помогаю со студенческими работами здесь

Апплет, который динамически должен создавать меню
Привет, ребята ... Замутил задачку: есть апплет, который динамически должен создавать меню. Менюху планирую читать из xml-файла. На...

В зависимости от ответа на экране должен появиться текст «Мне нравятся девочки!» или «Мне нравятся мальчики!».
Программа — льстец. На экране высвечивается вопрос «Кто ты: мальчик или девочка? Введи Д или М». В зависимости от ответа на экране должен...

Нужен макрос который выделяет текст, который выделен маркером
В общем, нужна помощь в создании макроса, который выделяет всё, что выделено маркером. Требуется это для того, чтобы потом скопировать все,...

Макрос в VBA, который должен подсчитывать сумму ряда в Exсel
Доброго время суток! Я новичек, мне нужна ваша помощь! Нужно написать макрос в VBA, который должен подсчитывать сумму ряда в...

Метод из интерфейса должен создавать новый массив (код программы и текст задачи внутри)
Текст Задачи Сложности с этим фрагментом: метод из интерфейса должен создавать новый массив Код программы: using System; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru