Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/20: Рейтинг темы: голосов - 20, средняя оценка - 4.90
756 / 263 / 57
Регистрация: 13.12.2009
Сообщений: 1,022
1

Как перенести Range на другой лист

25.01.2011, 04:45. Просмотров 3823. Ответов 17
Метки нет (Все метки)

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
33
34
35
36
37
38
Public shet As Worksheet
Public rng As Range
Private Sub CommandButton1_Click()
Set shet = ThisWorkbook.Worksheets(3)
Call coder(shet)
End Sub
 
 Function coder(shet)
 
 With shet
For i = 1 To 5
r = r + 10
 
Set rng = shet.Range(Cells(r + i, 2), Cells(r + i, 8))
rng.Merge
With rng.Borders(xlEdgeTop)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeRight)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeLeft)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeBottom)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
Next
End With
End Function
данная функция работает на листе3 и запускается с него, но нужно чтобы она работала на других листах. когда меняю индекс листа на 2 возникает ошибка при присвоении Range.
Помогите устранить ошибку!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2011, 04:45
Ответы с готовыми решениями:

Макрос. Выбрать отмеченные позиции и перенести на другой лист
Доброго времени суток В Книге 2 листа На листе "Общий" есть таблица состоящая из 6 столбцов...

Выбрать в диапазоне значения по заданному промежутку и перенести на другой лист Excel
Уважаемые форумчане! Пожалуйста, подскажите как сделать выборку значений в диапазоне по...

Перенести данные с листа на другой лист
Добрый вечер! у меня такая проблема: у меня на Лист1 есть 20 чисел, которые генерируются...

Перенести данные на другой лист по условию
Добрый вечер друзья! Нужна опять ваша помощь!!!! В ячейке А1-А31 стоят даты (например в А1-01.11,...

17
11015 / 3465 / 598
Регистрация: 13.02.2009
Сообщений: 10,306
25.01.2011, 07:20 2
Set shet = ThisWorkbook.Worksheets(3)
У тебя явно указан номер листа.
Замени на
Visual Basic
1
 Set shet = ThisWorkbook.ActiveSheet
0
756 / 263 / 57
Регистрация: 13.12.2009
Сообщений: 1,022
25.01.2011, 10:16  [ТС] 3
При замене кода форматирование происходит Лист3, т.е. той странице на которой прогу запускаю. Мне нужно форматировать лист друго, например, Лист2. Меняю индекс в записе на цифру 2 и происходит ошибка.
текст ошибки: Run-time error 1004
Applicftion-defined or object-defined error

как убрать ошибку не знаю, не идей.
0
11015 / 3465 / 598
Регистрация: 13.02.2009
Сообщений: 10,306
25.01.2011, 10:59 4
у тебя нет листа с индексом 2 - форматировать нечего
0
756 / 263 / 57
Регистрация: 13.12.2009
Сообщений: 1,022
25.01.2011, 13:36  [ТС] 5
Public shet As Worksheet
Public rng As Range
Private Sub CommandButton1_Click()
Set shet = ThisWorkbook.Worksheets(2)
Call coder(shet)
End Sub

Function coder(shet)

With shet
For i = 1 To 5
r = r + 10

Set rng = shet.Range(Cells(r + i, 2), Cells(r + i, 8))
rng.Merge
With rng.Borders(xlEdgeTop)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeRight)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeLeft)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeBottom)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
Next
End With
End Function
Преведенная сейчас прога не работает. Нужно, чтобы она форматировала Лист2. Я ранее написал коряво не поняли меня.
0
11015 / 3465 / 598
Регистрация: 13.02.2009
Сообщений: 10,306
25.01.2011, 13:59 6
что-то мне подсказывает, сто нельзя форматировать неастивный лист.
Попробуй сделать ему сначала селест
Visual Basic
1
2
shet.Select 
Set rng = shet........
0
Заблокирован
25.01.2011, 17:53 7
all_angarsk,
вот на эти строки замените:
Visual Basic
1
Set shet = ActiveWorkbook.Worksheets(2)
Visual Basic
1
2
3
With shet
    Set rng = shet.Range(.Cells(r + i, 2), .Cells(r + i, 8))
End With
ThisWorkbook - это личная книга макроса, если у вас форма находится в PERSONAL.XLS.
0
756 / 263 / 57
Регистрация: 13.12.2009
Сообщений: 1,022
25.01.2011, 18:13  [ТС] 8
выполнил изменения не работает. Ошибка на строке
Set rng = shet.Range(.Cells(r + i, 2), .Cells(r + i, 8))

надпись ошибки изменилась
run-time error 1004:
Method 'Range' of object '_worksheet' failed

пока не хочет работать
0
Заблокирован
25.01.2011, 18:25 9
all_angarsk,
закройте и откройте Excel.
0
11015 / 3465 / 598
Регистрация: 13.02.2009
Сообщений: 10,306
25.01.2011, 18:28 10
А ты всё-таки попробуй выбрать... А вдруг поможет?
Поставь перед Set select
shet.Select
Set rng = shet........
0
6638 / 1505 / 169
Регистрация: 09.01.2010
Сообщений: 4,296
25.01.2011, 18:54 11
For i = 1 To 3
ThisWorkbook.Worksheets(i).Sel ect
Set shet = ThisWorkbook.Worksheets(i)
Call coder(shet)
Next i
0
11015 / 3465 / 598
Регистрация: 13.02.2009
Сообщений: 10,306
25.01.2011, 19:00 12
gaw,
Я уже дважды говорил - без селекта не будет работать - не верит!
0
6638 / 1505 / 169
Регистрация: 09.01.2010
Сообщений: 4,296
25.01.2011, 19:12 13
Alex77755 может мы не правильно поняли, я просто твой код как бы написал полностью
0
11015 / 3465 / 598
Регистрация: 13.02.2009
Сообщений: 10,306
25.01.2011, 19:15 14
gaw,
У него рабочий код поэтому я не стал приводить его полностью. Там просто перед назначением необходимо выбрать лист, А то Set не понимеет, что ему назначать
0
6638 / 1505 / 169
Регистрация: 09.01.2010
Сообщений: 4,296
25.01.2011, 19:51 15
Alex77755 да тут вообще требования от нуждающихся в помощи:
1 взять условие на обменнике
2сделать
3 прокоментить
4 отправить на мыло
0
756 / 263 / 57
Регистрация: 13.12.2009
Сообщений: 1,022
26.01.2011, 03:43  [ТС] 16
Большая просьба, помочь заставить эту прогу работать на сосебнем листе и все. можно не коментировать, и т.д. Спасибо всем откликнувшимся на проблему. У меня тупик, не могу понять как управлять без проблем Range на соседних листах, где объявлять, как передавать параметры....
Глобальное объявление Public не помогает. не решает и размещение в макросе и .....
что ему нужно????
0
172 / 18 / 3
Регистрация: 14.12.2010
Сообщений: 50
26.01.2011, 06:50 17
Цитата Сообщение от all_angarsk Посмотреть сообщение
Set rng = shet.Range(Cells(r + i, 2), Cells(r + i, 8))
Set rng = shet.Range(shet.Cells(r + i, 2), shet.Cells(r + i, 8))
0
756 / 263 / 57
Регистрация: 13.12.2009
Сообщений: 1,022
26.01.2011, 07:49  [ТС] 18
Ура заработала!!!!!!!!!

Public shet As Worksheet
Public rng As Range
Private Sub CommandButton1_Click()
For w = 1 To 3
ThisWorkbook.Worksheets(w).Sel ect
Set shet = Worksheets(w)
Call coder(shet)
Next w
End Sub
Function coder(shet)
'ThisWorkbook.shet.Active не работает
'shet.Select не работает
With shet
For i = 1 To 5
r = r + 10
'ThisWorkbook.shet.Select не работает
'ThisWorkbook.shet.Active не работает
Set rng = shet.Range(shet.Cells(r + i, 2), shet.Cells(r + i, 8)) ' добавил shet.Cells
rng.Merge
With rng.Borders(xlEdgeTop)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeRight)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeLeft)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
With rng.Borders(xlEdgeBottom)
.LineStyle = 1
.Weight = 4
.Color = RGB(255, 0, 0)
End With
Next
End With
End Function
Всем спасибо за участие!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.01.2011, 07:49

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

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

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

"Method range of object _worksheet failed" при обращении на другой лист
Добрый день. Есть куча именованных диапазонов, названия которых складываются в выпадающий список...

Перенести все строки, в которых есть хоть одна пустая ячейка на другой лист
Есть список студентов в Excel их 4097, если хоть одна ячейка в строке пустая нужно перенести всю...


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

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

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