Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Дмитрий0794
0 / 0 / 0
Регистрация: 10.04.2019
Сообщений: 3
1

Обмен данными между листами Excel и VBA

10.04.2019, 21:52. Просмотров 1878. Ответов 5
Метки нет (Все метки)

Люди добрые помогите пожалуйста с решение данной проблемы. В макросах дуб-дубом, а степендию то хочется получать
Порядок работы
1.Набрать на «листе 1» в первых двух столбцах таблицу исходных данных X и Y, например Ваш прогноз температуры на 10 дней (A2:A11, B2:B11), первую строку использовать для подписи заголовков столбцов. В ячейку B14 занести количество точек в массивах (10)
2.На «листе 1» разместить 3 командных кнопки, одну подписать «ЧТЕНИЕ С ЛИСТА», вторую «ЗАПИСЬ НА ЛИСТ », третью «ОЧИСТКА»
3.Через кнопку «ЧТЕНИЕ С ЛИСТА» открыть редактор VBA и набрать программу считывания данных (двумя способами) с «листа 1» в переменные VBA (X, Y, N). С помощью пошаговой отладки убедиться, что переменные VBA заполняются.
4.Через кнопку «ЗАПИСЬ НА ЛИСТ » открыть редактор VBA и набрать программу записи данных на лист 2.
5.проверить работу кнопок(после нажатия кнопок "чтение с листа","запись на лист" на листе 2 должны появиться вседанные с листа 1, после нажатия на кнопку "очистка" все данные с листа 2 должны исчезнуть, если нажимается только кнопка "запись на лист"без нажатия на "чтение с листа" то лист 2 должен оставаться пустым.

Программный код

Считывание переменных в массив

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim X(10), Y(10), N As Variant ' объявление переменных уровня модуля 
 
Private Sub CommandButton1_Click() 
 
N = Worksheets(1).Range("B14").Value ' чтение ячейки B14 листа 1 в переменную N 
 
' цикл считывания N ячеек первого и второго столбца листа 1 в массивы X и Y 
For i = 1 To N 
X(i) = Worksheets(1).Cells(i + 1, 1).Value 
Y(i) = Worksheets(1).Cells(i + 1, 2).Value 
Next i 
 
End Sub
Запись значений в ячейки из массива

Visual Basic
1
2
3
4
5
6
7
8
Private Sub CommandButton2_Click() 
' Запись на лист 2 содержимого переменных N (в ячейку D14), X и Y ( 3 и 4 столбцы) 
Worksheets(2).Range("D14").Value = N 
For i = 1 To N 
Worksheets(2).Cells(i + 1, 3).Value = X(i) 
Worksheets(2).Cells(i + 1, 4).Value = Y(i) 
Next i 
End Sub
Стирание содержимого ячеек

Visual Basic
1
2
3
4
5
6
7
8
Private Sub CommandButton3_Click() 
' Очистка на 2 листе ячейки D14, 3 и 4 столбца 
Worksheets(2).Range("D14").Value = " " 
For i = 1 To N 
Worksheets(2).Cells(i + 1, 3).Value = " " 
Worksheets(2).Cells(i + 1, 4).Value = " " 
Next i 
End Sub
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2019, 21:52
Ответы с готовыми решениями:

Обмен данными между Excel и Project
Всем здравствуйте. Возникла необходимость по желанию пользователя при нажатии кнопки в ms project...

Обмен данными между Access 2007 и Visio 2007 используя VBA
Доброго времени суток уважаемые товарищи!:) Суть: Решил я написать одну софтину которая бы...

Макрос в VBA для работы с рабочими листами в Excel
Макрос средствами VBA for Excel В форме ввести шаблон и с помощью операции Like образовать новый...

Excel: как выделить все листы, находящиеся между заданными листами?
эта команда - Sheets(Array("zayavki", "list3")).Select - выделяет только обозначенные листы в...

Обмен данными с MS Excel
Ранее не сталкивался ни с чем подобным, да еще и дали на самостоятельное изучение, ничего не...

5
Kate_27
185 / 124 / 62
Регистрация: 27.03.2019
Сообщений: 263
11.04.2019, 09:47 2
Дмитрий0794, Добрый день. А какую помощь Вы хотите? вроде код Ваш худо-бедно работает.
Есть конечно несколько вопросов и записать красивее можно, но работает же))
вот у меня вопрос:
1. если Вы нажимали уже на чтение с листа, то в глобальных переменных уже хранятся значения с листа 1. В этом случае: можно бесконечно нажимать на запись на лист, лист2 пустым не станет. Надеюсь понятно сказала. я имею в виду, в вашем задании надо чтобы вторая кнопка срабатывала только после нажатия первой каждый раз?
2. если Вы хотите, чтобы после очистки 2 лист был кристально чистым везде, то лучше очищать его не так)
1
Дмитрий0794
0 / 0 / 0
Регистрация: 10.04.2019
Сообщений: 3
11.04.2019, 10:12  [ТС] 3
Спасибо что откликнулись, только суть проблемы в том что я вообще не могу даже одну кнопку создать... создаю кнопку, прописываю код, а в итоге ексель пишет что макрос не найден..... Не могли бы вы помочь? Если что не за спасибо- главное чтоб мобильный банк был) заранее спасибо ещё раз
0
Kate_27
185 / 124 / 62
Регистрация: 27.03.2019
Сообщений: 263
11.04.2019, 10:34 4
Лучший ответ Сообщение было отмечено Дмитрий0794 как решение

Решение

Дмитрий0794,
Я так понимаю разработчик на ленту Вы добавили?
Книга какое расширение имеет сейчас? Должно быть xlsm. Если нет, то нажимаете сохранить как и выбираете нужное расширение.
Дальше вводите данные на лист1.
Вставляете кнопку, лично я вставила активХ. А точнее 3 кнопки
Не выходя из режима конструктора щёлкаете на кнопке 2 раза, откроется редактор, туда Вставляете код для соответствующей кнопки.
Должно работать.
Проверьте
1
Дмитрий0794
0 / 0 / 0
Регистрация: 10.04.2019
Сообщений: 3
11.04.2019, 11:07  [ТС] 5
Kate_27,
Спасибо Вам огромное! Всё получилось!
0
Kate_27
185 / 124 / 62
Регистрация: 27.03.2019
Сообщений: 263
11.04.2019, 11:11 6
Дмитрий0794, да делов-то)
0
11.04.2019, 11:11
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2019, 11:11

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

Обмен данными с рабочей книгой MS Excel
Ранее не сталкивался ни с чем подобным, дали на самостоятельное изучение и при этом вообще ничего...

1. Обмен данными с рабочей книгой MS Excel. 2. Проектирование форм окон
1. Для восьми хозяйств известны общий объем валовой продукции (ден.ед) и площадь...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru