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

Переключение между книгами после использования формы

05.04.2013, 11:14. Показов 2658. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть макрос, который копирует станицу в новый документ, открывает форму для ввода данных, а потом введенные данные копирует в документ, который создали вначале.
Проблема в том, что данные с формы вставляет не в созданный документ, а в старый.
Код который вызывает у меня сомненья - начинается с 23 строчки


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
33
34
35
Sub ReqForm()
MKTG = ActiveWorkbook.Name
Start = ActiveCell.Row 
Fname = Range("BH" & Start).Value 
yourdate = Format(Date, "yyyy-mm-dd") 
Fname = Fname & yourdate & ".xlsx" 
Worksheets("ReqForm").Copy 
 
Dim x As String
strPath = "C:\Temp" 
On Error Resume Next
x = GetAttr(strPath) And 0
If Err = 0 Then 
FileNameXls = strPath & "\" & Fname
ActiveWorkbook.SaveAs Filename:=FileNameXls 
 
Else 
MsgBox "Путь не доступен " & strPath, vbCritical
End If
 
Windows(MKTG).Activate 
 
UserForm1.Show 
supplier = UserForm1.ComboBox1.Value
summ = UserForm1.TextBox1.Value
Unload UserForm1
 
Windows(FileNameXls).Activate 
 
Range("AP14").Select
ActiveCell.FormulaR1C1 = supplier 
Range("AP15").Select
ActiveCell.FormulaR1C1 = summ
 
End Sub

Отдельно выкладываю код формы

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Sub CommandButton1_Click()
    supplier = UserForm1.ComboBox1.Value
    summ = UserForm1.TextBox1.Text
    Unload Me
End Sub
 
Private Sub CommandButton2_Click()
    supplier = UserForm1.ComboBox1.Value
    summ = UserForm1.TextBox1.Text
    Unload Me
End Sub
 
Private Sub UserForm_Initialize()
    Dim iLastRow As Long
    iLastRow = Worksheets("Suppliers").Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To iLastRow
    ComboBox1.AddItem ActiveWorkbook.Worksheets("Suppliers").Range("A" & i).Value
    Next i
    
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2013, 11:14
Ответы с готовыми решениями:

Переключение между книгами
Здравствуйте, как можно обойтись без активизации книги. Работаю с тремя книгами , т.к. без Activate не работает. For i = 2 To...

Переключение между книгами
Открыты 2 книги. Одна - источник данных (название всегда разное). Другая - приемник. Название всегда "Книга1". Как переключиться...

Переключение между группами контроллов без использования TabControl
Всем привет. Возникла задача сделать окно с набросанными на нем контролами. Пришла идея сделать через TabControl, однако пользователь может...

3
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
05.04.2013, 14:17
Я бы сохранял документ в самом конце. Никаких activate в процессе - единственное после копирования листа задаём ссылку на активную книгу, затем обращаемся к книге по этой ссылке.

Visual Basic
1
2
3
4
5
Sub tt()
    Sheets(1).Copy
    Set wb = ActiveWorkbook
    MsgBox wb.Sheets(1).[a1]
End Sub
1
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 28
05.04.2013, 17:08  [ТС]
Да, после того как написал тему, меня тоже посетило данное озарение, что копировать лист можно после использования формы, а в самой форме прописать на нужный лист заполнение данных перед тем как его копировать.
Но для общего развития хотел бы получить ответ как использовать форму и потом переключаться между книгами.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
05.04.2013, 17:14
Ну так ведь написал - set wb=
Получили ссылку на каждую нужную книгу - и работайте. И не нужно "переключаться", учитесь работать без этих селектов/активаций.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2013, 17:14
Помогаю со студенческими работами здесь

Переключение между элементами формы клавишей Enter
Всем здравствуйте. Есть форма , на которой расположены textbox’ы и combobox’в , как сделать так , чтобы при нажатии на первый текстбокс и...

Переключение между вкладками формы навигации через горячие клавиши
Добрый день всем. Имеется база, в которой есть главная форма навигации. К посту прилагаю условный пример такой базы. На этой...

Отличия между книгами
Добрый день! Решил прикупить себе Искусство программирования Кнута. Так вот... не могу понять в чем отличия серии и...

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

Ошибка обновления связи между книгами
Столкнулся с такой проблемой. Мне нужно сделать связь между книгами1 и 2. В книге1 в ячейках формулы. Когда оба файла открыты...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru