Свой мастер диаграмм...

Программирование на Visual Basic for Applications
daemon_mx
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 11.04.2007 (Ср) 20:20
Откуда: Уфа

Свой мастер диаграмм...

Сообщение daemon_mx » 05.06.2007 (Вт) 20:10

Здравствуйте все!!! Возможно мой вопрос покажется простым и банальным.

На одном и листов в Exel'e есть таблица с данными но возникла потребность построить график по некоторым ячейкам которые выбираются пользователь. По этому поводу возник вопрос как получить адреса ячеек(коллекцию ячеек) выделенных пользователем с помощью Ctrl'a?
Imposible is Noting so Go and Do what YOU want...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.06.2007 (Вт) 20:12

Selection.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

daemon_mx
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 11.04.2007 (Ср) 20:20
Откуда: Уфа

Сообщение daemon_mx » 05.06.2007 (Вт) 20:14

Если можно немного по подробнее???
Imposible is Noting so Go and Do what YOU want...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.06.2007 (Вт) 20:15

Что именно?
Selection содержит все выделенные ячейки вне зависимости от их смежности.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

daemon_mx
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 11.04.2007 (Ср) 20:20
Откуда: Уфа

Сообщение daemon_mx » 05.06.2007 (Вт) 20:23

Для того чтобы построить график небходимо написать следующие строки
Код: Выделить всё
ActiveChart.SeriesCollection(1).XValues = "=лист1!R13C3:R27C3"
    ActiveChart.SeriesCollection(1).Values = "=лист1!R13C2:R27C2"

Поэтому у меня вопрос как перенести адреса ячеек(как строку) в эти две строки???
Imposible is Noting so Go and Do what YOU want...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.06.2007 (Вт) 20:29

Пан издевается???
Пан не смог, узнав, что надо selection, посмотреть selection.address?Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!??
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

daemon_mx
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 11.04.2007 (Ср) 20:20
Откуда: Уфа

Сообщение daemon_mx » 05.06.2007 (Вт) 21:07

Нет я не издеваюсь просто я только начал разбираться в VBA поэтому некоторые вещи которые банальны для Вас, сможны для меня.
Imposible is Noting so Go and Do what YOU want...

daemon_mx
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 11.04.2007 (Ср) 20:20
Откуда: Уфа

Сообщение daemon_mx » 05.06.2007 (Вт) 22:25

Кстати возник еще один вопрос. А можно ли сделать выделение с помошью Ctrl'a более нагляднее, а не просто серый фон? Например чтобы по контуру "бегали муравьи" как в мастере диаграмм???
Imposible is Noting so Go and Do what YOU want...

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 06.06.2007 (Ср) 17:13

Может подойдёт конструкция:
Код: Выделить всё
On Error Resume Next
Dim rg As Range
Set rg = Application.InputBox(Prompt:="Выберите ячейки", Type:=8)
If Not rg Is Nothing Then
    MsgBox rg.Address
    'Ваши действия
End If

daemon_mx
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 11.04.2007 (Ср) 20:20
Откуда: Уфа

Сообщение daemon_mx » 09.06.2007 (Сб) 19:15

Димитрий все работает но загвоздка в том, что список адресов выдается в следующем виде:
Код: Выделить всё
$G$6,$I$6,$E$6,$C$6,$K$6

а необходимо в таком виде:
Код: Выделить всё
R13C2:R27C2

для того чтобы потом получилась вот такая строчка
Код: Выделить всё
ActiveChart.SeriesCollection(1).Values = "=лист1!R13C2:R27C2"

Может кто-нибудь делал подобное??? Подскажите как сделать???
Imposible is Noting so Go and Do what YOU want...

Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 09.06.2007 (Сб) 22:16

Может так ?

Код: Выделить всё
Sub Макрос1()
    Dim iRange As String
    iRange = Selection.Address(ReferenceStyle:=xlR1C1)
    MsgBox iRange
End Sub

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 09.06.2007 (Сб) 23:12

daemon_mx поставте в начале
Код: Выделить всё
Application.ReferenceStyle = xlR1C1

daemon_mx
Новичок
Новичок
 
Сообщения: 40
Зарегистрирован: 11.04.2007 (Ср) 20:20
Откуда: Уфа

Сообщение daemon_mx » 10.06.2007 (Вс) 14:12

Спасибо! Теперь показывает в формате R1C1, но выходит ошибка в строке
Код: Выделить всё
ActiveChart.SeriesCollection(1).Values =

он требует чтобы строка содержала название листа(помимо R1C1)
Код: Выделить всё
"=лист1!R4C3:R4C27"

можно ли решить данную проблему??? Или придется самому вписывать название листа(программно)?
Imposible is Noting so Go and Do what YOU want...


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 124

    TopList  
cron