Количество строк в новом диапазоне. Если этот аргумент опущен, количество строк в диапазоне остается неизменным
И что он мне говорит что он ОПУЩЕН а что это такое ОПУЩЕН (((( что там опустилось.... Я даже и не думал что это означает или #Н/Д как в этом примере или как было до этого как будто он дублирует то же самое только под таблицей (((( Вот теперь после того как меня тыкнули носом в то место я теперь ОСОЗНАЮ данную терминологию и немного ее понял.
buchlotnik,
Цитата
Количество строк в новом диапазоне. Если этот аргумент опущен, количество строк в диапазоне остается неизменным
И что он мне говорит что он ОПУЩЕН а что это такое ОПУЩЕН (((( что там опустилось.... Я даже и не думал что это означает или #Н/Д как в этом примере или как было до этого как будто он дублирует то же самое только под таблицей (((( Вот теперь после того как меня тыкнули носом в то место я теперь ОСОЗНАЮ данную терминологию и немного ее понял.lebensvoll
lebensvoll, ну что за детский сад, давайте процитирую толковый словарь Ушакова:
Цитата
ОПУСТИ́ТЬ, опущу, опустишь, совер. (к опускать). 1. кого-что. Переместить в более низкое положение, поставить, положить ниже, чем было. Опустить ребенка на пол. Опустить флаг. 2. что. Откинуть, придать лежачее положение чему-нибудь. Опустить верх экипажа. Опустить воротник. 3. что. Сделать пропуск, выпустить, исключить. Опустить подробности в рассказе.
Вы не пропускали (опускали) аргумент, а прописали ОБА -[vba]
Код
.Resize(s, 9)
[/vba] - и никакого #Н/Д это не означает, это означает диапазон высотой S и шириной 9, так? От A8 67 строк вниз это сколько? правильно, это до A74, да в ширину 9 - это от A8 до I74, а записываем откуда? [vba]
Код
sh1.Range("A8:I" & s).Value
[/vba] т.е. от A8 до I67 - вот до 67 строки и пишется нормально, а с 68 по 74 - данных-то в копируемом диапазоне и нет, отсюда и #Н/Д. Не путайте номер строки на листе с числом строк в диапазоне.
lebensvoll, ну что за детский сад, давайте процитирую толковый словарь Ушакова:
Цитата
ОПУСТИ́ТЬ, опущу, опустишь, совер. (к опускать). 1. кого-что. Переместить в более низкое положение, поставить, положить ниже, чем было. Опустить ребенка на пол. Опустить флаг. 2. что. Откинуть, придать лежачее положение чему-нибудь. Опустить верх экипажа. Опустить воротник. 3. что. Сделать пропуск, выпустить, исключить. Опустить подробности в рассказе.
Вы не пропускали (опускали) аргумент, а прописали ОБА -[vba]
Код
.Resize(s, 9)
[/vba] - и никакого #Н/Д это не означает, это означает диапазон высотой S и шириной 9, так? От A8 67 строк вниз это сколько? правильно, это до A74, да в ширину 9 - это от A8 до I74, а записываем откуда? [vba]
Код
sh1.Range("A8:I" & s).Value
[/vba] т.е. от A8 до I67 - вот до 67 строки и пишется нормально, а с 68 по 74 - данных-то в копируемом диапазоне и нет, отсюда и #Н/Д. Не путайте номер строки на листе с числом строк в диапазоне.buchlotnik
Сообщение отредактировал buchlotnik - Вторник, 20.09.2016, 21:56
buchlotnik, я не могу понять почему 74 (((( если от А8 67 это как бы =60 строк!? или я не верно считаю... Возможно кому то понадобится работа кода, вот файл и сам код, спасибо огромнейшее всем кто помог его создать...
[vba]
Код
Private Sub CommandButton4_Click() 'Код для сохранения данных на лист Общий журнал заявок для УПТК q = MsgBox("ВЫ УЕРЕНЫ, что хотете сохранить данные и перенести их в общий журнал???", vbOKCancel) If q = vbCancel Then Exit Sub 'Сообщения для утверждения ваших действий
Dim sh1 As Worksheet, sh 'код копирования нужных данных в нужные нам листы Dim s As Long, s2 As Long Set sh1 = Worksheets("Подтверждение заявок для УПТК") s = sh1.Cells(Rows.Count, 1).End(xlUp).Row
'Для листа "План Факт по заявке" With Worksheets("План Факт по заявке") 'вычисляем последнюю строку на листе +1 s2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'копируем... .Range("A" & s2).Resize(s - 7, 7) = sh1.Range("A8:G" & s).Value .Range("K" & s2).Resize(s - 7) = sh1.Range("J8:J" & s).Value .Range("Q" & s2).Resize(s - 7) = sh1.Range("K8:K" & s).Value .Range("A8:L67").Replace "#N/A", "" End With
'Для листа "Отказы от поставок" With Worksheets("Отказы от поставок") 'вычисляем последнюю строку на листе +1 s2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'копируем... .Range("A" & s2).Resize(s - 7, 8) = sh1.Range("A8:H" & s).Value .Range("L" & s2).Resize(s - 7) = sh1.Range("K8:K" & s).Value .Range("A8:L67").Replace "#N/A", "" End With
'Для листа "План ФАКТ по отгрузке" With Worksheets("План ФАКТ по отгрузке") 'вычисляем последнюю строку на листе +1 s2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'копируем... .Range("A" & s2).Resize(s - 7, 9) = sh1.Range("A8:I" & s).Value .Range("K" & s2).Resize(s - 7) = sh1.Range("J8:J" & s).Value .Range("L" & s2).Resize(s - 7) = sh1.Range("L8:L" & s).Value .Range("M" & s2).Resize(s - 7) = sh1.Range("K8:K" & s).Value .Range("N" & s2).Resize(s - 7) = sh1.Range("M8:M" & s).Value .Range("A8:L67").Replace "#N/A", "" End With
buchlotnik, я не могу понять почему 74 (((( если от А8 67 это как бы =60 строк!? или я не верно считаю... Возможно кому то понадобится работа кода, вот файл и сам код, спасибо огромнейшее всем кто помог его создать...
[vba]
Код
Private Sub CommandButton4_Click() 'Код для сохранения данных на лист Общий журнал заявок для УПТК q = MsgBox("ВЫ УЕРЕНЫ, что хотете сохранить данные и перенести их в общий журнал???", vbOKCancel) If q = vbCancel Then Exit Sub 'Сообщения для утверждения ваших действий
Dim sh1 As Worksheet, sh 'код копирования нужных данных в нужные нам листы Dim s As Long, s2 As Long Set sh1 = Worksheets("Подтверждение заявок для УПТК") s = sh1.Cells(Rows.Count, 1).End(xlUp).Row
'Для листа "План Факт по заявке" With Worksheets("План Факт по заявке") 'вычисляем последнюю строку на листе +1 s2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'копируем... .Range("A" & s2).Resize(s - 7, 7) = sh1.Range("A8:G" & s).Value .Range("K" & s2).Resize(s - 7) = sh1.Range("J8:J" & s).Value .Range("Q" & s2).Resize(s - 7) = sh1.Range("K8:K" & s).Value .Range("A8:L67").Replace "#N/A", "" End With
'Для листа "Отказы от поставок" With Worksheets("Отказы от поставок") 'вычисляем последнюю строку на листе +1 s2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'копируем... .Range("A" & s2).Resize(s - 7, 8) = sh1.Range("A8:H" & s).Value .Range("L" & s2).Resize(s - 7) = sh1.Range("K8:K" & s).Value .Range("A8:L67").Replace "#N/A", "" End With
'Для листа "План ФАКТ по отгрузке" With Worksheets("План ФАКТ по отгрузке") 'вычисляем последнюю строку на листе +1 s2 = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'копируем... .Range("A" & s2).Resize(s - 7, 9) = sh1.Range("A8:I" & s).Value .Range("K" & s2).Resize(s - 7) = sh1.Range("J8:J" & s).Value .Range("L" & s2).Resize(s - 7) = sh1.Range("L8:L" & s).Value .Range("M" & s2).Resize(s - 7) = sh1.Range("K8:K" & s).Value .Range("N" & s2).Resize(s - 7) = sh1.Range("M8:M" & s).Value .Range("A8:L67").Replace "#N/A", "" End With
Ещё раз - цитирую по той ссылке, которую привёл выше (русскими переводами пользоваться крайне не рекомендую): RowSize - The number of rows in the new range - число строк в новом диапазоне. У вас переменная s хранит НОМЕР последней заполненной строки - 67. Её вы используете в [vba]
Код
.Resize(s, 9)
[/vba]Т.е. вы от ячейки A8 задаёте диапазон 67 строк на 9 столбцов, т.е. от A8 до I74, а вот чтобы стало 60 строк, Андрей и предложил [vba]
Код
.Resize(s-7, 9)
[/vba]
Цитата
если от А8 67 это как бы =60 строк!?
Ещё раз - цитирую по той ссылке, которую привёл выше (русскими переводами пользоваться крайне не рекомендую): RowSize - The number of rows in the new range - число строк в новом диапазоне. У вас переменная s хранит НОМЕР последней заполненной строки - 67. Её вы используете в [vba]
Код
.Resize(s, 9)
[/vba]Т.е. вы от ячейки A8 задаёте диапазон 67 строк на 9 столбцов, т.е. от A8 до I74, а вот чтобы стало 60 строк, Андрей и предложил [vba]