Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/27: Рейтинг темы: голосов - 27, средняя оценка - 4.63
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110

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

25.01.2011, 04:45. Показов 5547. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2011, 04:45
Ответы с готовыми решениями:

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

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

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

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

как убрать ошибку не знаю, не идей.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.01.2011, 10:59
у тебя нет листа с индексом 2 - форматировать нечего
0
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
25.01.2011, 13:36  [ТС]
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
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.01.2011, 13:59
что-то мне подсказывает, сто нельзя форматировать неастивный лист.
Попробуй сделать ему сначала селест
Visual Basic
1
2
shet.Select 
Set rng = shet........
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
25.01.2011, 17:53
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
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
25.01.2011, 18:13  [ТС]
выполнил изменения не работает. Ошибка на строке
Set rng = shet.Range(.Cells(r + i, 2), .Cells(r + i, 8))

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

пока не хочет работать
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
25.01.2011, 18:25
all_angarsk,
закройте и откройте Excel.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.01.2011, 18:28
А ты всё-таки попробуй выбрать... А вдруг поможет?
Поставь перед Set select
shet.Select
Set rng = shet........
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
25.01.2011, 18:54
For i = 1 To 3
ThisWorkbook.Worksheets(i).Select
Set shet = ThisWorkbook.Worksheets(i)
Call coder(shet)
Next i
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.01.2011, 19:00
gaw,
Я уже дважды говорил - без селекта не будет работать - не верит!
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
25.01.2011, 19:12
Alex77755 может мы не правильно поняли, я просто твой код как бы написал полностью
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.01.2011, 19:15
gaw,
У него рабочий код поэтому я не стал приводить его полностью. Там просто перед назначением необходимо выбрать лист, А то Set не понимеет, что ему назначать
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
25.01.2011, 19:51
Alex77755 да тут вообще требования от нуждающихся в помощи:
1 взять условие на обменнике
2сделать
3 прокоментить
4 отправить на мыло
0
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
26.01.2011, 03:43  [ТС]
Большая просьба, помочь заставить эту прогу работать на сосебнем листе и все. можно не коментировать, и т.д. Спасибо всем откликнувшимся на проблему. У меня тупик, не могу понять как управлять без проблем Range на соседних листах, где объявлять, как передавать параметры....
Глобальное объявление Public не помогает. не решает и размещение в макросе и .....
что ему нужно????
0
173 / 19 / 3
Регистрация: 14.12.2010
Сообщений: 50
26.01.2011, 06:50
Цитата Сообщение от 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
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
26.01.2011, 07:49  [ТС]
Ура заработала!!!!!!!!!

Public shet As Worksheet
Public rng As Range
Private Sub CommandButton1_Click()
For w = 1 To 3
ThisWorkbook.Worksheets(w).Select
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2011, 07:49
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru