Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перенос данных не полностью на другой лист - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос данных не полностью на другой лист (Макросы/Sub)
Перенос данных не полностью на другой лист
lebensvoll Дата: Вторник, 13.09.2016, 15:43 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
Добрый день многоуважаемые форумчане!!!
Прошу вас помочь почему код (идентичный как и на другом листе, срабатывает на ура) а именно на этом листе при переносе данных (((( пишет что данные перенеслись (((( а их нет (((( много раз сидел перебирал корректировал. Добился то чтоб данные переносились но почему то переносятся не полностью (((((
[vba]
Код
Private Sub CommandButton4_Click() 'Код для сохранения данных заявки на лист Журнала заявок
q = MsgBox("Вы уверены что хотите сохранить данные в журнал заявок???", vbOKCancel)
If q = vbCancel Then Exit Sub 'Сообщения для утверждения ваших действий
    Dim shSheetf As Worksheet
    Dim shSheett As Worksheet
' Dim lStartSheet_("Заявка на транспорт БЕТОМАКСУ") As Long, lEndSheet_("Заявка на транспорт БЕТОМАКСУ") As Long
    Dim lLastRow As Long
    Dim i As Long
    'Даём листам имена "("Заявка на транспорт БЕТОМАКСУ")" и "shSheet_("транспортный журнал")",
    'чтобы было удобнее писать код.
    Set shSheetf = Worksheets("Заявка на транспорт БЕТОМАКСУ")
    Set shSheett = Worksheets("транспортный журнал")
    lStartSheet = 10
    lEndSheet = shSheetf.Cells(Rows.Count, 1).End(xlUp).Row
    'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
    'Двигаем по первому листу по столбцу "A".
For i = lStartSheet To lEndSheet
        If Not shSheetf.Cells(i, 2).Value = Empty Then
            'Перносим данные на второй лист.
            shSheett.Cells(lLastRow, 2).Value = shSheetf.Cells(i, 1).Value
            For X = 2 To 11
        shSheett.Cells(lLastRow, X + 1).Value = shSheetf.Cells(i, X).Value
        Next X
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    Next i
            Range(Cells(6, 1), Cells(lEndSheet, 12)).ClearContents
    MsgBox "ДАННЫЕ ПЕРЕНЕСЕНЫ НА ЛИСТ ЖУРНАЛА ЗАВОК..."
End Sub
[/vba]
Помогите пожалуйста, объясните почему, в чем ошибки то???
К сообщению приложен файл: 2973724.xlsm(41Kb)


Кто бы ты ни был, мир в твоих руках

Сообщение отредактировал lebensvoll - Вторник, 13.09.2016, 15:43
 
Ответить
СообщениеДобрый день многоуважаемые форумчане!!!
Прошу вас помочь почему код (идентичный как и на другом листе, срабатывает на ура) а именно на этом листе при переносе данных (((( пишет что данные перенеслись (((( а их нет (((( много раз сидел перебирал корректировал. Добился то чтоб данные переносились но почему то переносятся не полностью (((((
[vba]
Код
Private Sub CommandButton4_Click() 'Код для сохранения данных заявки на лист Журнала заявок
q = MsgBox("Вы уверены что хотите сохранить данные в журнал заявок???", vbOKCancel)
If q = vbCancel Then Exit Sub 'Сообщения для утверждения ваших действий
    Dim shSheetf As Worksheet
    Dim shSheett As Worksheet
' Dim lStartSheet_("Заявка на транспорт БЕТОМАКСУ") As Long, lEndSheet_("Заявка на транспорт БЕТОМАКСУ") As Long
    Dim lLastRow As Long
    Dim i As Long
    'Даём листам имена "("Заявка на транспорт БЕТОМАКСУ")" и "shSheet_("транспортный журнал")",
    'чтобы было удобнее писать код.
    Set shSheetf = Worksheets("Заявка на транспорт БЕТОМАКСУ")
    Set shSheett = Worksheets("транспортный журнал")
    lStartSheet = 10
    lEndSheet = shSheetf.Cells(Rows.Count, 1).End(xlUp).Row
    'Указываем, с какой строки начать вставлять данные на второй лист.
    lLastRow = shSheett.Cells(Rows.Count, 2).End(xlUp).Row + 1
    'Двигаем по первому листу по столбцу "A".
For i = lStartSheet To lEndSheet
        If Not shSheetf.Cells(i, 2).Value = Empty Then
            'Перносим данные на второй лист.
            shSheett.Cells(lLastRow, 2).Value = shSheetf.Cells(i, 1).Value
            For X = 2 To 11
        shSheett.Cells(lLastRow, X + 1).Value = shSheetf.Cells(i, X).Value
        Next X
            'Изменяем переменную "lLastRow",
            'чтобы данные уже вставлять в следующую строку.
            lLastRow = lLastRow + 1
        End If
    Next i
            Range(Cells(6, 1), Cells(lEndSheet, 12)).ClearContents
    MsgBox "ДАННЫЕ ПЕРЕНЕСЕНЫ НА ЛИСТ ЖУРНАЛА ЗАВОК..."
End Sub
[/vba]
Помогите пожалуйста, объясните почему, в чем ошибки то???

Автор - lebensvoll
Дата добавления - 13.09.2016 в 15:43
SLAVICK Дата: Вторник, 13.09.2016, 16:05 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 1839
Репутация: 614 ±
Замечаний: 0% ±

2007,2010,2013,2016
Думаю причина в строке:
[vba]
Код
For i = lStartSheet To lEndSheet
[/vba]
А точнее в lStartSheet и lEndSheet. :D .


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеДумаю причина в строке:
[vba]
Код
For i = lStartSheet To lEndSheet
[/vba]
А точнее в lStartSheet и lEndSheet. :D .

Автор - SLAVICK
Дата добавления - 13.09.2016 в 16:05
Матраскин Дата: Вторник, 13.09.2016, 16:05 | Сообщение № 3
Группа: Друзья
Ранг: Обитатель
Сообщений: 341
Репутация: 63 ±
Замечаний: 0% ±

20xx
lebensvoll, на первый взгляд, у Вас в цикле

[vba]
Код
For i = lStartSheet To lEndSheet
[/vba]

идёт счёт от 10 до 6 ?))) чёт подозрительно

p.s немного не успел


в интернете опять кто-то не прав

Сообщение отредактировал Матраскин - Вторник, 13.09.2016, 16:06
 
Ответить
Сообщениеlebensvoll, на первый взгляд, у Вас в цикле

[vba]
Код
For i = lStartSheet To lEndSheet
[/vba]

идёт счёт от 10 до 6 ?))) чёт подозрительно

p.s немного не успел

Автор - Матраскин
Дата добавления - 13.09.2016 в 16:05
lebensvoll Дата: Вторник, 13.09.2016, 16:10 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
SLAVICK, Матраскин, тогда объясните почему данный код срабатывает на двух других листах на ура.
А именно на этом я столкнулся с проблемой (((( хотя в коде лишь изменял графы и строки (цифры) а тут он начал ругаться на
Цитата
For i = lStartSheet To lEndSheet

Цитата
идёт счёт от 10 до 6 ?))) чёт подозрительно

тем самым копирует данные не полностью на другой лист(((((???


Кто бы ты ни был, мир в твоих руках

Сообщение отредактировал lebensvoll - Вторник, 13.09.2016, 16:11
 
Ответить
СообщениеSLAVICK, Матраскин, тогда объясните почему данный код срабатывает на двух других листах на ура.
А именно на этом я столкнулся с проблемой (((( хотя в коде лишь изменял графы и строки (цифры) а тут он начал ругаться на
Цитата
For i = lStartSheet To lEndSheet

Цитата
идёт счёт от 10 до 6 ?))) чёт подозрительно

тем самым копирует данные не полностью на другой лист(((((???

Автор - lebensvoll
Дата добавления - 13.09.2016 в 16:10
Матраскин Дата: Вторник, 13.09.2016, 16:15 | Сообщение № 5
Группа: Друзья
Ранг: Обитатель
Сообщений: 341
Репутация: 63 ±
Замечаний: 0% ±

20xx
lebensvoll, я не знаком с другими макросами/листами, возможно там было как то подругому <_<

но есть предположение, что [vba]
Код
lStartSheet = 10
[/vba] разные значения для разных листов. Почему вы решили присвоить 10?


в интернете опять кто-то не прав
 
Ответить
Сообщениеlebensvoll, я не знаком с другими макросами/листами, возможно там было как то подругому <_<

но есть предположение, что [vba]
Код
lStartSheet = 10
[/vba] разные значения для разных листов. Почему вы решили присвоить 10?

Автор - Матраскин
Дата добавления - 13.09.2016 в 16:15
SLAVICK Дата: Вторник, 13.09.2016, 16:18 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 1839
Репутация: 614 ±
Замечаний: 0% ±

2007,2010,2013,2016
Мы же уже сказали:
А точнее в lStartSheet и lEndSheet.

Цитата Матраскин, 13.09.2016 в 16:05, в сообщении № 3
идёт счёт от 10 до 6

Смотрите в Ваших файлах где работает - lEndSheet больше чем lStartSheet .
Собственно тут и нужно менять.
Добавьте проверку перед циклом:
[vba]
Код
If lEndSheet <= lStartSheet Then lEndSheet = lStartSheet + 1
[/vba]
К сообщению приложен файл: 9597600.xlsm(43Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеМы же уже сказали:
А точнее в lStartSheet и lEndSheet.

Цитата Матраскин, 13.09.2016 в 16:05, в сообщении № 3
идёт счёт от 10 до 6

Смотрите в Ваших файлах где работает - lEndSheet больше чем lStartSheet .
Собственно тут и нужно менять.
Добавьте проверку перед циклом:
[vba]
Код
If lEndSheet <= lStartSheet Then lEndSheet = lStartSheet + 1
[/vba]

Автор - SLAVICK
Дата добавления - 13.09.2016 в 16:18
lebensvoll Дата: Вторник, 13.09.2016, 16:30 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 2 ±
Замечаний: 60% ±

Excel 2010
Матраскин, а я тупанул ((((( точно не сам не знаю почему (((( тут должно было стоять 6-ть (верно) это ведь начало всех последующих начал (((((.
Блин прошу меня простить я вновь не внимателен (((( хотя сижу и упираюсь что все верно ведь скопировал и применил )))) наверное нужно отдохнуть.
СПАСИБО ВАМ ОГРОМНОЕ!!!


Кто бы ты ни был, мир в твоих руках
 
Ответить
СообщениеМатраскин, а я тупанул ((((( точно не сам не знаю почему (((( тут должно было стоять 6-ть (верно) это ведь начало всех последующих начал (((((.
Блин прошу меня простить я вновь не внимателен (((( хотя сижу и упираюсь что все верно ведь скопировал и применил )))) наверное нужно отдохнуть.
СПАСИБО ВАМ ОГРОМНОЕ!!!

Автор - lebensvoll
Дата добавления - 13.09.2016 в 16:30
krosav4ig Дата: Вторник, 13.09.2016, 19:19 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1346
Репутация: 547 ±
Замечаний: 0% ±

Excel 2007, 2013
lebensvoll, а как вам такой вариант?
[vba]
Код
Private Sub CommandButton4_Click() 'Код для сохранения данных заявки на лист Журнала заявок
    With Worksheets("транспортный журнал").ListObjects("Таблица1").QueryTable
        .Connection = "ODBC;DSN=Excel Files;;DriverId=1046;DBQ=" & ThisWorkbook.FullName
        .Refresh
    End With
End Sub
[/vba]
К сообщению приложен файл: 7828174.xlsm(45Kb)


(_)Õvõ(_)

Сообщение отредактировал krosav4ig - Вторник, 13.09.2016, 19:19
 
Ответить
Сообщениеlebensvoll, а как вам такой вариант?
[vba]
Код
Private Sub CommandButton4_Click() 'Код для сохранения данных заявки на лист Журнала заявок
    With Worksheets("транспортный журнал").ListObjects("Таблица1").QueryTable
        .Connection = "ODBC;DSN=Excel Files;;DriverId=1046;DBQ=" & ThisWorkbook.FullName
        .Refresh
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 13.09.2016 в 19:19
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос данных не полностью на другой лист (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!