Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/63: Рейтинг темы: голосов - 63, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 5
1

Поиск первой пустой ячейки в строке

23.01.2013, 15:35. Показов 13193. Ответов 9
Метки нет (Все метки)

Суть такова:
Есть два листа в Excel ("Данные" и "Таблица") необходимо перенести данные из столбца "N3:N7" листа "данные" сначала в столбец "В3:B7" затем в столбец "С3: C7" затем в столбец "D3: D7" и т.д. листа "таблица" так как значения в ячейках "N3:N7" будут меняться.
Пробовал написать макрос, я честно говоря чайник в этом, излазил кучу форумов и ссылок и так и не нашел как же можно скопировать данные в первую пустую ячейку строки 3 например, в моем случае.
Заранее огромное спасибо!
P.S. файлик пользуется динамическим обменом данных (ДРВ)
0
Вложения
Тип файла: xls Пример.xls (56.5 Кб, 102 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2013, 15:35
Ответы с готовыми решениями:

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

Поиск первой пустой ячейки в отфильтрованном столбце Excel
Всем привет. Ну собственно вопрос в заголовке темы. Имеется таблица с 5 столбцами и N...

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

Поиск последней пустой ячейки
Доброго времени суток. Необходим макрос для excel следующего функционала: есть выпадающий список в...

9
5460 / 1140 / 50
Регистрация: 15.09.2012
Сообщений: 3,444
23.01.2013, 16:32 2
Код, который ищет на первом листе в третьей строке первую пустую ячейку:
Кликните здесь для просмотра всего текста
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
Sub Макрос1()
    
    Dim shSheet_1 As Excel.Worksheet
    Dim myLastCell As Excel.Range
    
    '1. Даём листу имя "shSheet_1". Это имя будем использовать в коде
        'для обращения к листу. Так удобно писать код.
    Set shSheet_1 = Worksheets(1)
    
    '2. Ищем в третьей строке последнюю ячейку с данными.
    'What:="?" - знак вопроса - это специальный символ в данном случае.
    'SearchDirection:=xlPrevious - поиск с конца в начало.
    'Если ячейка будет найдена, то даём ей имя "myLastCell".
    Set myLastCell = shSheet_1.Rows(3).Find(What:="?", LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
        MatchCase:=False, SearchFormat:=False)
    
    '3. Смотрим, была ли найдена хоть какая-то ячейка.
    'Если не найдена ячейка, т.е. вся третья строка пустая
        '(если нет скрытых столбцов), то в переменной "myLastCell"
        'будет слово "Nothing".
    If Not myLastCell Is Nothing Then
    
        '4. Здесь делаем необходимые действия с пустой ячейкой.
        'Чтобы получить доступ к ячейке справа, которая является пустой,
            'используем команду "Offset".
        'Я, например, сделаю эту ячейку активной.
        myLastCell.Offset(0, 1).Activate
 
    End If
    
End Sub



Примечания
  1. В коде использована команда Find. Команда "Find" в Excel связана с окном "Найти и заменить". Поэтому в коде надо указывать все параметры команды "Find", чтобы на работу кода не повлияли настройки из окна "Найти и заменить". Из параметров я не использую только параметр "After".
  2. Ещё команда "Find" чувствительна к объединённым ячейкам и может не дать результата, если на листе будут объединённые ячейки.
0
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 5
23.01.2013, 16:48  [ТС] 3
Спасибо за ответ.
Но как теперь в эту активную ячейку вставить то, что мне нужно?
0
5460 / 1140 / 50
Регистрация: 15.09.2012
Сообщений: 3,444
23.01.2013, 16:52 4
птичка_ворон, используйте команду Paste.
0
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 5
23.01.2013, 17:01  [ТС] 5
Ругается на строку myLastCell.Offset(0, 1).Activate
метод Activate из класса range завершен неверно
0
5460 / 1140 / 50
Регистрация: 15.09.2012
Сообщений: 3,444
23.01.2013, 18:32 6
Пункт 1

В сообщении #4 я ошибся. Я имел ввиду команду Copy.


Пункт 2

Цитата Сообщение от птичка_ворон Посмотреть сообщение
Ругается на строку myLastCell.Offset(0, 1).Activate
метод Activate из класса range завершен неверно
я просто для примера привёл команду Activate. Вам же не нужно делать активной какую-то ячейку. Вы вместо команды Activate используйте свою команду.
0
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 5
24.01.2013, 09:26  [ТС] 7
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub 1()
 
Range("N3:N7").Select
    Selection.Copy
        Dim shSheet_1 As Excel.Worksheet
    Dim myLastCell As Excel.Range
    
    Set shSheet_1 = Worksheets(1)
        Set myLastCell = shSheet_1.Rows(3).Find(What:="?", LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
        MatchCase:=False, SearchFormat:=False)
       If Not myLastCell Is Nothing Then
    
             myLastCell.Offset(0, 1).Paste
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
     End If
    
End Sub
Опять ругается на ту же строку myLastCell.Offset(0, 1).Paste
0
15019 / 6347 / 1725
Регистрация: 24.09.2011
Сообщений: 9,976
24.01.2013, 09:53 8
А на Sub 1() не ругается?

Добавлено через 5 минут
Можно сделать одной командой
Visual Basic
1
2
Sheets("Таблица").Cells(3, Columns.Count).End(xlToLeft).Offset(, 1).Resize(5).Value = _
    Sheets("Данные").Range("N3:N7").Value
1
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 5
24.01.2013, 09:57  [ТС] 9
Огромное спасибо тебе
0
17 / 1 / 2
Регистрация: 20.04.2016
Сообщений: 120
30.03.2017, 15:36 10
Добрый день.
Не могу разобраться с макросом. Уже неделю по форумам смотрю.
Нужно просто найти пустую ячейку в первой строке.
Как это сделать?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2017, 15:36

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

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

Поиск первой НЕ пустой ячейки
Привет всем! Помогите пожалуйста справится с задачей есть табличка из двух столбцов (в...

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

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

Поиск первой пустой строки в dataGridView
Доброе утро. Задача - найти первую пустую строку. И записать в первый столбец значение. Пытаюсь...

Как узнать значение первой ячейки в строке (QTableView) при нажатии на любую ячейку в строке?
Сразу извинюсь за корявость речи. Знатоки, подскажите, как узнать значение первой ячейки в строке...


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

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

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