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

Вход

Регистрация

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

 

= Мир MS Excel/Смещение по столбцам - Offset - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Смещение по столбцам - Offset (Макросы/Sub)
Смещение по столбцам - Offset
FelixZid Дата: Понедельник, 11.06.2018, 01:11 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте! yes

Немного не понимаю этого зверя Offset, подскажите пожалуйста.

[vba]
Код
Private Sub CommandButton12_Click()
    Dim s As String, p As String, Rng As Range, mychart As Chart
    
        p = TextBox6.Text
        
            If p > 1 Then
                Cells(1, 7).Value = p
            Set Rng = Range(Cells(2, 2), Cells(2 + (p - 1), 2))
                Rng.Name = "rng"
                s = "=SUM(" & Rng.Address(0, 0) & ")/$G$1"
                z = WorksheetFunction.RoundUp(p / 2, 0)
                Cells(p + 1, 6).Formula = s
                Cells(p + 1, 6).AutoFill Range(Cells(p + 1, 6), Cells(Rows.Count, "B").End(xlUp).Offset(, 5))

            Set mychart = Worksheets(1).ChartObjects(1).Chart
                mychart.SetSourceData Source:=Worksheets(1).Range("B:B,G:G")
                mychart.SeriesCollection(2).ChartType = xlXYScatterSmoothNoMarkers
                mychart.SeriesCollection(2).Border.Color = RGB(120, 0, 0)
                mychart.SeriesCollection(2).Format.Line.Weight = 2
                fname = ThisWorkbook.Path & Application.PathSeparator & "picture.gif"
                mychart.Export Filename:=fname, Filtername:="gif"
                Image1.Picture = LoadPicture(fname)
            Else
                MsgBox "Внимание! Введите число большее 1", 16
            End If
End Sub
[/vba]

Проблема заключается в строке:

[vba]
Код
Cells(p + 1, 6).AutoFill Range(Cells(p + 1, 6), Cells(Rows.Count, "B").End(xlUp).Offset(, 5))
[/vba]

Компилятор выводит соответствующее сообщение
К сообщению приложен файл: 8938343.png (13.2 Kb)
 
Ответить
СообщениеЗдравствуйте! yes

Немного не понимаю этого зверя Offset, подскажите пожалуйста.

[vba]
Код
Private Sub CommandButton12_Click()
    Dim s As String, p As String, Rng As Range, mychart As Chart
    
        p = TextBox6.Text
        
            If p > 1 Then
                Cells(1, 7).Value = p
            Set Rng = Range(Cells(2, 2), Cells(2 + (p - 1), 2))
                Rng.Name = "rng"
                s = "=SUM(" & Rng.Address(0, 0) & ")/$G$1"
                z = WorksheetFunction.RoundUp(p / 2, 0)
                Cells(p + 1, 6).Formula = s
                Cells(p + 1, 6).AutoFill Range(Cells(p + 1, 6), Cells(Rows.Count, "B").End(xlUp).Offset(, 5))

            Set mychart = Worksheets(1).ChartObjects(1).Chart
                mychart.SetSourceData Source:=Worksheets(1).Range("B:B,G:G")
                mychart.SeriesCollection(2).ChartType = xlXYScatterSmoothNoMarkers
                mychart.SeriesCollection(2).Border.Color = RGB(120, 0, 0)
                mychart.SeriesCollection(2).Format.Line.Weight = 2
                fname = ThisWorkbook.Path & Application.PathSeparator & "picture.gif"
                mychart.Export Filename:=fname, Filtername:="gif"
                Image1.Picture = LoadPicture(fname)
            Else
                MsgBox "Внимание! Введите число большее 1", 16
            End If
End Sub
[/vba]

Проблема заключается в строке:

[vba]
Код
Cells(p + 1, 6).AutoFill Range(Cells(p + 1, 6), Cells(Rows.Count, "B").End(xlUp).Offset(, 5))
[/vba]

Компилятор выводит соответствующее сообщение

Автор - FelixZid
Дата добавления - 11.06.2018 в 01:11
FelixZid Дата: Понедельник, 11.06.2018, 01:12 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Подскажите, как быть? Какое значение в Offset указать? С 1 до 10 пробовал, не помогло %)


Сообщение отредактировал FelixZid - Понедельник, 11.06.2018, 01:14
 
Ответить
СообщениеПодскажите, как быть? Какое значение в Offset указать? С 1 до 10 пробовал, не помогло %)

Автор - FelixZid
Дата добавления - 11.06.2018 в 01:12
Pelena Дата: Понедельник, 11.06.2018, 07:25 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
В сообщении об ошибке сказано, что метод Autofill завешен неверно, так что Offset здесь ни при чем.
Что сделать-то надо? Смещение или всё же автозаполнение? Может, не Offset, а Resize нужен?
Приложите файл с примером и объясните конечную цель


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВ сообщении об ошибке сказано, что метод Autofill завешен неверно, так что Offset здесь ни при чем.
Что сделать-то надо? Смещение или всё же автозаполнение? Может, не Offset, а Resize нужен?
Приложите файл с примером и объясните конечную цель

Автор - Pelena
Дата добавления - 11.06.2018 в 07:25
FelixZid Дата: Понедельник, 11.06.2018, 11:17 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, необходимо автозаполнение столбца G ("протянуть" формулу) на основе столбца B до последней заполненной ячейки [vba]
Код
Cells(Rows.Count, "B").End(xlUp)
[/vba] Может row использовать?


Сообщение отредактировал FelixZid - Понедельник, 11.06.2018, 11:24
 
Ответить
СообщениеPelena, необходимо автозаполнение столбца G ("протянуть" формулу) на основе столбца B до последней заполненной ячейки [vba]
Код
Cells(Rows.Count, "B").End(xlUp)
[/vba] Может row использовать?

Автор - FelixZid
Дата добавления - 11.06.2018 в 11:17
FelixZid Дата: Понедельник, 11.06.2018, 11:24 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena, просто к примеру с этим кодом всё ок, работает

[vba]
Код
Private Sub CommandButton11_Click()
    Dim s As String, b As String, Rng As Range, mychart As Chart
    
        b = TextBox5.Text
        
            If b > 1 Then
                Cells(1, 6).Value = b
            Set Rng = Range(Cells(2, 2), Cells(2 + (b - 1), 2))
                Rng.Name = "rng"
                s = "=SUM(" & Rng.Address(0, 0) & ")/$F$1"
                z = WorksheetFunction.RoundUp(b / 2, 0)
                Cells(b + 1, 6).Formula = s
                Cells(b + 1, 6).AutoFill Range(Cells(b + 1, 6), Cells(Rows.Count, "B").End(xlUp).Offset(, 4))

            Set mychart = Worksheets(1).ChartObjects(1).Chart
                mychart.SetSourceData Source:=Worksheets(1).Range("B:B,F:F")
                mychart.SeriesCollection(2).ChartType = xlXYScatterSmoothNoMarkers
                mychart.SeriesCollection(2).Border.Color = RGB(250, 250, 0)
                mychart.SeriesCollection(2).Format.Line.Weight = 2
                fname = ThisWorkbook.Path & Application.PathSeparator & "picture.gif"
                mychart.Export Filename:=fname, Filtername:="gif"
                Image1.Picture = LoadPicture(fname)
            Else
                MsgBox "Внимание! Введите число больше 1", 16
            End If
End Sub
[/vba]
 
Ответить
СообщениеPelena, просто к примеру с этим кодом всё ок, работает

[vba]
Код
Private Sub CommandButton11_Click()
    Dim s As String, b As String, Rng As Range, mychart As Chart
    
        b = TextBox5.Text
        
            If b > 1 Then
                Cells(1, 6).Value = b
            Set Rng = Range(Cells(2, 2), Cells(2 + (b - 1), 2))
                Rng.Name = "rng"
                s = "=SUM(" & Rng.Address(0, 0) & ")/$F$1"
                z = WorksheetFunction.RoundUp(b / 2, 0)
                Cells(b + 1, 6).Formula = s
                Cells(b + 1, 6).AutoFill Range(Cells(b + 1, 6), Cells(Rows.Count, "B").End(xlUp).Offset(, 4))

            Set mychart = Worksheets(1).ChartObjects(1).Chart
                mychart.SetSourceData Source:=Worksheets(1).Range("B:B,F:F")
                mychart.SeriesCollection(2).ChartType = xlXYScatterSmoothNoMarkers
                mychart.SeriesCollection(2).Border.Color = RGB(250, 250, 0)
                mychart.SeriesCollection(2).Format.Line.Weight = 2
                fname = ThisWorkbook.Path & Application.PathSeparator & "picture.gif"
                mychart.Export Filename:=fname, Filtername:="gif"
                Image1.Picture = LoadPicture(fname)
            Else
                MsgBox "Внимание! Введите число больше 1", 16
            End If
End Sub
[/vba]

Автор - FelixZid
Дата добавления - 11.06.2018 в 11:24
RAN Дата: Понедельник, 11.06.2018, 19:43 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
к примеру с этим кодом всё ок, работает

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


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
к примеру с этим кодом всё ок, работает

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

Автор - RAN
Дата добавления - 11.06.2018 в 19:43
FelixZid Дата: Понедельник, 11.06.2018, 21:51 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, хорошо, что тогда с первым кодом не так?
 
Ответить
СообщениеRAN, хорошо, что тогда с первым кодом не так?

Автор - FelixZid
Дата добавления - 11.06.2018 в 21:51
Pelena Дата: Вторник, 12.06.2018, 06:25 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
необходимо автозаполнение столбца G
А заполняете шестой столбец (F)
Cells(p + 1, 6).AutoFill


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
необходимо автозаполнение столбца G
А заполняете шестой столбец (F)
Cells(p + 1, 6).AutoFill

Автор - Pelena
Дата добавления - 12.06.2018 в 06:25
RAN Дата: Вторник, 12.06.2018, 08:26 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Я же написал, в чем дело.
Вы пытаетесь протянуть одну ячейку по двум столбцам.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЯ же написал, в чем дело.
Вы пытаетесь протянуть одну ячейку по двум столбцам.

Автор - RAN
Дата добавления - 12.06.2018 в 08:26
FelixZid Дата: Вторник, 12.06.2018, 12:08 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
RAN, Pelena, да, да, точно, понял, спасибо)))
 
Ответить
СообщениеRAN, Pelena, да, да, точно, понял, спасибо)))

Автор - FelixZid
Дата добавления - 12.06.2018 в 12:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Смещение по столбцам - Offset (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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