Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
35 / 35 / 9
Регистрация: 16.07.2012
Сообщений: 253

Копировать данные в таблицу имя которой задается переменной

18.01.2018, 20:20. Показов 1763. Ответов 8

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, пожалуйста, как можно реализовать такой цикл:

- есть лист "форма00" на котором я выбираю из выпадающего списка данные.
это строка "Выберите из списка категорию для добавления" - это как раз и есть имя таблицы которая находится на листе "конст".
и строка "Ввести данные" - эти данные необходимо вставить в следующую пустую строку этой таблицы.

Например выбираем категорию FIO, вводим Ivanov Ivan и нажимаем кнопку "записать данные", после чего макрос должен скопировать значения Ivanov Ivan и вставить в таблицу FIO на листе конст. Но еще раз повторюсь, имя таблицы каждый раз может быть разное, нужно сделать через переменную.

Я понимаю как это сделать но не хватает знаний vba для написания кода. Вижу 2 варианта это обращение к самой таблице по имени через listobject или же цикл перебора первой строки по заголовку.

Прошу помощи знатоков так как знаю что там для понимающих 5 минут дела, код будет не большой. Заранее благодарен.

Прикрепляю файл
Вложения
Тип файла: zip Книга1.zip (33.5 Кб, 6 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2018, 20:20
Ответы с готовыми решениями:

Как в хранимой процедуре записывать результат в таблицу, имя которой задается переменной
Подскажите, как в хранимой процедуре SQL записывать результат в таблицу, имя которой задается переменной: set ntable=' Нужное имя...

Вывод значения переменной, имя которой задаётся аргументом пакетного файла, без использования команды SET
Есть bat файл для которого в качестве параметра указывается переменная например windir на что программа выдает сообщение windir=C:\Windows,...

Создание переменной, имя которой включает имя другой переменной
Вот пример кода var y = 1; var x = 'p' + y; eval( 'var' + x + '= 123' );к созданной переменной можно обращаться как к p1. А как быть...

8
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
18.01.2018, 21:18
Лучший ответ Сообщение было отмечено zewsua как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub НовРаб()
    On Error Resume Next
    With Sheets("конст").ListObjects([d9].Value)
        If Err Then
            MsgBox "Таблица отсутвует"
        Else
            .ListRows.Add.Range.Cells(1).Value = [d11].Value
        End If
    End With
End Sub
Добавляет в первый столбец таблицы ... таблицы "FIO" у Вас нет
1
35 / 35 / 9
Регистрация: 16.07.2012
Сообщений: 253
18.01.2018, 21:55  [ТС]
Добавлено через 45 секунд
Цитата Сообщение от Step_UA Посмотреть сообщение
Добавляет в первый столбец таблицы ... таблицы "FIO" у Вас нет
да, таблицы FIO Нет но там есть таблица ФИО, так вот проверил данный код, он добавляет в эту таблицу в первый столбец значение ячейки d11 на этом же листе.

А где в этом коде задается имя таблицы что то не могу понять

Добавлено через 8 минут
Цитата Сообщение от zewsua Посмотреть сообщение
Добавляет в первый столбец таблицы ... таблицы "FIO" у Вас нет
ааа, теперь понял, там получается надо что бы я находился на листе форма00 тогда оно норм добавляет)) классно, как раз то что нужно, большое Вам спасибо), Вы мне очень помогли.
0
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
18.01.2018, 22:02
Лучший ответ Сообщение было отмечено zewsua как решение

Решение

Цитата Сообщение от zewsua Посмотреть сообщение
А где в этом коде задается имя таблицы
Visual Basic
1
Sheets("конст").ListObjects([d9].Value) ' таблица с наименованием из ячейки d9
1
35 / 35 / 9
Регистрация: 16.07.2012
Сообщений: 253
23.01.2018, 23:47  [ТС]
Цитата Сообщение от Step_UA Посмотреть сообщение
.ListRows.Add.Range.Cells(1).Value = [d11].Value
Добрый вечер, подскажите, пожалуйста, а как можно сделать что бы значения в таблицу добавлялись в 2 столбца?
Например в этом коде который Вы мне предоставили значения добавляются в 1 столбец в соответствующую таблицу. Так вот в моем примере там есть столбец FIO и столбец ФИО, нужно что бы с формы 00 данные копировались с двух ячеек в 2 столбца. С ячейки D11 в столбец FIO а с ячейки D13 в столбец ФИО. Не могу понять как записать что бы данные внеслись в одну строку. Вот что я записал, но таким образом данные вносятся с первой ячейки в первый столбец а со второй ячейки во второй но уже в следующую строку.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
On Error Resume Next
            With Sheets("конст").ListObjects([d9].Value)
                If Err Then
                    MsgBox "Таблица отсутвует"
                Else
                    .ListRows.Add.Range.Cells(1).Value = [d11].Value
                    .ListRows.Add.Range.Cells(1, 2).Value = [d13].Value
                    MsgBox "Данные внесены"
                End If
            End With
            Range("D6,D9,D11,D13").ClearContents
0
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
23.01.2018, 23:55
Visual Basic
1
2
3
4
5
6
7
8
...
                Else
                    with .ListRows.Add.Range
                        .Cells(1).Value = [d11].Value
                        .Cells(1, 2).Value = [d13].Value
                    end with
                    MsgBox "Данные внесены"
                End If
0
35 / 35 / 9
Регистрация: 16.07.2012
Сообщений: 253
24.01.2018, 00:27  [ТС]
Цитата Сообщение от Step_UA Посмотреть сообщение
with .ListRows.Add.Range
* * * * * * * * * * * * .Cells(1).Value = [d11].Value
* * * * * * * * * * * * .Cells(1, 2).Value = [d13].Value
* * * * * * * * * * end with

проверил только что, вносит пустые ячейки просто
вроде все правильно написал как у Вас:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
On Error Resume Next
            With Sheets("конст").ListObjects([d9].Value)
                If Err Then
                    MsgBox "Таблица отсутвует"
                Else
                    .ListRows.Add.Range
                    .Cells(1).Value = [d11].Value
                    .Cells(1, 2).Value = [d13].Value
                    MsgBox "Данные внесены"
                End If
            End With
            Range("D6,D9,D11,D13").ClearContents
Добавлено через 7 минут
Цитата Сообщение от Step_UA Посмотреть сообщение
на этом куске добавляется пустая строка в таблице
Visual Basic
1
with .ListRows.Add.Range
а дальше ничего не происходит
0
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
24.01.2018, 00:35
Цитата Сообщение от zewsua Посмотреть сообщение
на этом куске добавляется пустая строка в таблице
а где же в вашем коде оператор with и end with?
0
35 / 35 / 9
Регистрация: 16.07.2012
Сообщений: 253
24.01.2018, 00:56  [ТС]
Цитата Сообщение от Step_UA Посмотреть сообщение
а где же в вашем коде оператор with и end with?
может я чего то не понимаю но оператор with на строке 2 а оператор end with на строке 11. Я тут ничего не менял только после else то что вы прислали
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
On Error Resume Next
            With Sheets("конст").ListObjects([d9].Value)
                If Err Then
                    MsgBox "Таблица отсутвует"
                Else
                    .ListRows.Add.Range
                    .Cells(1).Value = [d11].Value
                    .Cells(1, 2).Value = [d13].Value
                    MsgBox "Данные внесены"
                End If
            End With
            Range("D6,D9,D11,D13").ClearContents
Добавлено через 1 минуту
Цитата Сообщение от Step_UA Посмотреть сообщение
а где же в вашем коде оператор with и end with?
аа блин вот я глупый, Вы уж простите) не заметил.. все я понял ошибку....сейчас проверю

Добавлено через 3 минуты
все работает, большое Вам спасибо. Извините еще раз за невнимательность.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2018, 00:56
Помогаю со студенческими работами здесь

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

В переменной типа string хранится имя переменной, к которой нужно обратиться. Как это сделать?
Пример: int speed = 10; string s = "speed"; MessageBox.Show(/*как-то обратиться к переменной, чье имя содержится в переменной...

Создайте класс с константной переменной, значение которой задается в списке инициализирующий значений конструктора, и безымянным перечислением
Создайте класс с константной переменной, значение которой задается в списке инициализирующий значений конструктора, и безымянным...

Как копировать данные в таблицу порционно?
Условно говоря, у меня есть таблица, где имеется 2,5 млн записей. Как мне эти записи копировать в цикле по частям? Например, по 50 тысяч за...

Excel копировать данные и вставлять в таблицу с шагом
Здравствуйте! Подскажите как правильно написать макрос? Нужно чтоб автоматически копировались данные ячеек AK6:AO6 и вставлялись в...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru