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

Работа с данными на форме

25.04.2010, 11:54. Показов 4862. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди, помогите.
Есть форма, в которую заносятся данные. Необходимо сделать так, чтобы при нажатии кнопки в конце формы эти данные вырезались и разносились по столбцам в таблицу. Таблица и форма находятся на разных листах в одной книге. Если не сложно, подскажите с кодом…
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.04.2010, 11:54
Ответы с готовыми решениями:

Работа с формой Userform1 (управление переходит из модуля к форме и возвращается вместе с данными в модуль)
Помогите решить нелепую проблему: в ходе выполнения макроса вызывается форма Userform1 методом show, но форма виснет на экране и не...

Поле с данными из запроса в форме
Здравствуйте, форумчане. Необходимо чтобы в поле главной формы отображалось значение из поля запроса COUNT -№ (поле рассчитывается с...

Заполнение на форме данными из другого документа
Здравствуйте! Перейду собственно к проблеме - имеется два документа (Допустим Док1 и Док2), в одном документе есть совпадающие реквизиты...

35
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
25.04.2010, 13:41
видимо, тебе нужно что-то вроде
activeworkbook.sheets(<Имя листа, на котором находится таблица>).cells(ячейка, в которую вставляются данные).value= me.textbox(твой бокс).value
Видимо, тебе нужно прописывать для каждого текстбокса, куда его значение вставляется на листе.
Все это пишешь как действия при нажатии на кнопку.
0
1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 30
25.04.2010, 13:51  [ТС]
Спасибо за отклик, T@sh
Я не понял, как сделать так, чтобы данные из формы добавлялись в новую строк: т.е. код находит последнюю непустую строку и вставляет данные в новую. (Хотелось бы получить аналог мастера шаблонов с помощью макроса)
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
25.04.2010, 14:48
Нахождение первой пустой строки (например):

RowFirst = WorksheetFunction.CountA(Columns('A')) + 1
0
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 65
26.04.2010, 03:57
Быстренько вот такой код получился:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub CommandButton1_Click()
Dim str As Integer
Dim stlb As Integer
 
With ActiveWorkbook.Worksheets(1) 'предполагается, что данные на 1й 
                                  'лист вставляются
    str = 1
    Do Until .Cells(str, 1).Value = '' 'Поиск первой непустой ячейки
                                       ' в 1м столбце
        str = str + 1
    Loop
    .Cells(str, 1).Value = Me.TextBox1.Value
End With
End Sub
Ну, а вообще, подгонишь уже под свой пример
0
1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 30
26.04.2010, 12:04  [ТС]
T@sh и Vlth, огромное спасибо, разобрался, получилось
Пользуясь случаем, разрешите задать еще один вопрос (VBA изучаю две недели, а нужно срочно :-))
1) как запретить печать файла ?
2) возможно ли запрещение удаления строк или очистки их содержимого без установки защиты книги (листа)?
3) как запретить отключение макросов (автоматически ставить низкий уровень безопасности?) как работают сертификаты?
Если не сложно, помогите кто чем может.
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
26.04.2010, 13:51
1) <как запретить печать файла ?>
Единственное, что приходит в голову - удалить
все элементы, запускающие печать, из панелей
инструментов и пункты меню аналогичного назначения.
При этом нужно не забыть вернут всё на места при
деактивации рабочей книги.

Пример (удаляем элемент управления 'печать' из
стандартной панели инструментов):

Visual Basic
1
2
3
4
5
Dim cbCntr As CommandBarControl
 
For Each cbCntr In Application.CommandBars('Standard').Controls
If cbCntr.Caption Like '*Печать*' Then cbCntr.Visible = False: Exit For
Next cbCntr
3) <как запретить отключение макросов?>

a) Запускаем ...Program FilesMicrosoft OfficeOffice10SELFCERT.EXE
б) Вносим своё имя.
в) В редакторе VBA: ToolsDigital Signature... выбираем то что внесли в п.(б)
(при этом в ProjectExplorer должен быть активирован соответствующий проект)
г) При первом запуске проекта выбираем 'всегда доверять этому источнику'

Удачи!
0
1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 30
26.04.2010, 15:29  [ТС]
Vlth, СУПЕР.
А решение второй задачи существует ?
Защить книгу нельзя, она постоянно обновляется. Можно ли сделать команду 'очистить содержимое' недоступной, а команду 'удалить' (строку, столбец)с требованием пароля? Команда 'удалить' нужна.
Я не слишком загнул? (раскотал ... :-))
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
26.04.2010, 16:46
Visual Basic
1
2
3
For Each cbCntr In Application.CommandBars('Cell').Controls
    If cbCntr.Caption Like '*Очистить содер*' Then cbCntr.Visible = False: Exit For
Next cbCntr
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
26.04.2010, 17:57
Для организации доступа к пункту меню 'удалить' можно попробовать
выбрать такой путь:
- Создать UserForm (модальную) с полем ввода пароля, в которой будет
обеспечиваться 'раздача' прав пользователям при открытии книги;

- Далее создать обработку щелчка правой клавиши мыши на листе

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 
Select Case txtUserName 'Значение этой переменной можно хранить во
'внешнем файле или Реестре, записывая его туда из поля формы
'UserForm 'пользователь' (при желании зашифровав)
Case 'Decadent':boolПраво=True
Case 'vlth':boolПраво=False
...
End Select
 
If boolПраво=False then
For Each cbCntr In Application.CommandBars('Cell').Controls
If cbCntr.Caption Like '*Удалить*' Then
cbCntr.Visible = False: Exit For
Еlse
cbCntr.Visible = True: Exit For
Next cbCntr
 
End Sub
Правда, сдаётся мне, Microsoft должна была позаботиться о разграничении прав при многопользовательском доступе к книге Excel...
0
1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 30
27.04.2010, 15:25  [ТС]
Vlth, последний вопрос. Как убрать команду 'настройка', которая находится: правая кнопка на панели инструментов (выбор панелей) - настройка, или двойной клик на панели инструментов.
Наличие этой команды сводит на нет все наши .visile = false :-((
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
27.04.2010, 16:04
Ответа нет (см. ссылку)

http://www.relib.com/forums/topic.asp?id=775692

А действительно, КАК??? М.б. кто-нибудь всё-таки добрался до
управления свойствами этого меню и его элементов? Отзовитесь!
0
1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 30
27.04.2010, 16:25  [ТС]
Матом хочется ругаться...
А процедуры отслеживания BeforeDoubleClick и BeforeRightClick могут нам как-то помочь? Я еще в них не разобрался :-(
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
27.04.2010, 17:27
Только при 'кликах' на рабочей области, т.е. на листе
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
27.04.2010, 20:22
Наверное, это единственный путь отключить контекстное меню
- убрать 'Worksheet Menu Bar' полностью:

CommandBars(1).Enabled = False
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
27.04.2010, 21:19
Есть кое-что получше - защита панелей от изменения:

Visual Basic
1
2
3
4
5
6
7
8
Dim CmdBar As CommandBar
 
On Error Resume Next
For Each CmdBar In CommandBars
If CmdBar.Name = 'Имя_панели' Then
CmdBar.Protection = msoBarNoCustomize + msoBarNoMove + msoBarNoChangeVisible'(Эту строку можно продолжать ... + msoBarNoResize и т.д.)
End If
Next CmdBar
0
1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 30
28.04.2010, 10:08  [ТС]
Vlth, вы меня опередили, я тоже до этого дошел. Однако встает следующий вопрос :-))) Исключив от нехороших действий 99% юзеров, что мешает 1% знающих VBA написать:
Visual Basic
1
2
3
4
5
6
Sub На_каждую_хитрую_задницу()
On Error Resume Next
For Each панель In Application.CommandBars
панель.Protection = msoBarNoProtection
Next панель
End Sub
Это можно как то предотвратить ? Или это вопрос из области на каждую хитрую задницу найдется либо глупая либо более умная one.
Кстати, насчет Visible, прикольней задать ненужным клавишим макросы типа:
Visual Basic
1
2
3
Sub Копировать () 'Для кнопки копировать на панели инструментов и т.д.
Msgbox ('Ну и что мы собрались копировать?')
End sub
Да, а комбинации клавиш можно отключать?
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
28.04.2010, 14:22
<комбинации клавиш можно отключать?>
http://www.relib.com/forums/topic.asp?id=775832

<Это можно как-то предотвратить?>
Все изменения CommandBars и пр. элементов интерфейса -
я об этом уже говорил - должны действовать только тогда,
когда книга с твоим проектом (или книга, которой твой проект
управляет)активна. Если проекты защищены от просмотра...
теперь вопрос снят?
0
1 / 1 / 0
Регистрация: 25.04.2010
Сообщений: 30
28.04.2010, 15:07  [ТС]
Вопрос снят, каюсь, он был не умным.
Vlth, куда высылать пиво?
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
28.04.2010, 15:39
Пиво высылать в Питер (шутка)
А насчёт вопроса... По-моему - нормальный вопрос и
ответ на него далеко не так очевиден.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2010, 15:39
Помогаю со студенческими работами здесь

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В справочной автовокзала хранится расписание движения автобусов....

Как заполнить поля в форме данными из таблицы MySql?
Есть форма, в ней несколько полей для ввода, куда можно вручную вводить данные. Также должна быть кнопка по которой вызывается таблица...

Работа с битами И Работа с символьными данными
1. Ввести 8 символов. В символе с наибольшим кодом заменить 5-й бит единицей, а в символе с наименьшим кодом 6-й бит - нулем. Вывести...

Нужно заполнить ComboBox, находящийся на другой форме, данными из MySQL
Нужно заполнить combobox из mysql, combobox находиться на второй форме .Пробывал заполнять с главной формы все работает private void...

Заполнение combobox данными из таблицы, которая находиться на другой форме
Здравствуйте. Сразу скажу, я новичок в программировании и нуждаюсь в помощи. У меня есть бд сделанная в Access, мне нужно заполнить...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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