Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу Можно ли в Range использовать переменные ?
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
bb_bb bb_bb вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.03.2006
По умолчанию Можно ли в Range использовать переменные ? - 18.04.2006, 11:19

Доброго времени суток !

Можно ли подставлять в Range переменные ? То есть :
Range("A1:A10") как x=1 y=10 Range (что-то(x,y)) ?
Мне надо строить много диаграмм , программно , а диапазон значений задается через текущие значения переменных в цикле...



Спасибо !
Ответить с цитированием
  (#2 (permalink)) Старый
bb_bb bb_bb вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.03.2006
По умолчанию 18.04.2006, 11:28

Код:
ActiveChart.ChartType = xlStockOHLC
    ActiveChart.SetSourceData Source:=Sheets("Data").Range("A" & ccc & ":A" & cc), PlotBy:=xlColumns
    ActiveChart.SeriesCollection(1).Values = Sheets("Data").Range("D" & ccc & ":D" & cc)
    ActiveChart.SeriesCollection(2).Values = Sheets("Data").Range("E" & ccc & ":E" & cc)
    ActiveChart.SeriesCollection(3).Values = Sheets("Data").Range("F" & ccc & ":F" & cc)
    ActiveChart.SeriesCollection(4).Values = Sheets("Data").Range("G" & ccc & ":G" & cc)
    ActiveChart.SeriesCollection(1).XValues = Sheets("Data").Range("A" & ccc & ":A" & cc)
    ActiveChart.SeriesCollection(2).XValues = Sheets("Data").Range("A" & ccc & ":A" & cc)
    ActiveChart.SeriesCollection(3).XValues = Sheets("Data").Range("A" & ccc & ":A" & cc)
    ActiveChart.SeriesCollection(4).XValues = Sheets("Data").Range("A" & ccc & ":A" & cc)
    
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=month

Я пытался сделать вот так , не работает ...
Application defined , or object defined error ..
Ответить с цитированием
  (#3 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 18.04.2006, 15:38

Можно, но биржевая диаграмма не строится на основании данных одного столбца, поэтому проблема заключается не в переменных, а в самых первых строчках представленного Вами кода, вне зависимости от источника его получения

Любой из двух нижеопубликованных вариантов будет работать (конечно при соблюдение некоторых условий)

Код:
iRowMin = 3: iRowMax = 19

With ThisWorkbook.Charts.Add
     .SetSourceData Source:=Worksheets("Data") _
     .Range("A" & iRowMin & ":E" & iRowMax), PlotBy:=xlColumns
     .ChartType = xlStockOHLC ' изменение типа, только после построения диаграммы
     .Name = "1_Январь 2006"
     .HasTitle = False
     .HasLegend = False
     ...
     ...
     ...
     With .ChartGroups(1).HiLoLines.Border
          .ColorIndex = 57
          .Weight = xlMedium
          .LineStyle = xlContinuous
     End With
End With
Код:
Set iList = Worksheets("Data")
Set iChart = ThisWorkbook.Charts.Add

iRowMin = 3: iRowMax = 19

With iChart
     .SetSourceData Source:=iList _
     .Range(iList.Cells(iRowMin, 1), iList.Cells(iRowMax, 5)), PlotBy:=xlColumns
     .ChartType = xlStockOHLC ' изменение типа, только после построения диаграммы
     .Name = "1_Январь 2006"
     .HasTitle = False
     .HasLegend = False
     ...
     ...
     ...
     With .ChartGroups(1).HiLoLines.Border
          .ColorIndex = 57
          .Weight = xlMedium
          .LineStyle = xlContinuous
     End With
End With
Ответить с цитированием
  (#4 (permalink)) Старый
bb_bb bb_bb вне форума
Member
 
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.03.2006
По умолчанию 18.04.2006, 16:26

Ага , у меня в исходной таблице столбец с датами сильно далек от 4х других . Сейчас поставил их рядом , сделал нормальный range и все ок. Но почему вариант указанный мной , если заменить переменные на непосредственные номера ячеек , прекрасно работает ?

P.S. Pashulka , спасибо, что бы я без Вас делал ..
Ответить с цитированием
  (#5 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 18.04.2006, 17:06

По всей видимости, это связано с диапазоном, который Вы предварительно выделили, перед построением диаграммы (см. свой предыдущий топик)

Что касается построения биржевых диаграмм на основании несмежных ячеек, то если мне не изменяет старческий маразм, это возможно.

Код:
With ThisWorkbook.Charts.Add
     .SetSourceData Source:=Worksheets("Data") _
     .Range("A1:A15,E1:H15"), PlotBy:=xlColumns
     .ChartType = xlStockOHLC
End With
Код:
x = 1: y = 15: iAddress$ = "Ax:Ay,Ex:Hy"

iAddress$ = Application.Substitute(iAddress$, "x", x)
iAddress$ = Application.Substitute(iAddress$, "y", y)

With ThisWorkbook.Charts.Add
     .SetSourceData Source:=Worksheets("Data") _
     .Range(iAddress$), PlotBy:=xlColumns
     .ChartType = xlStockOHLC
End With
Вместо замены конечно можно использовать и об'единение, но строка получится довольно громоздкой …

Примечание : В MS Excel 2000 и старше Application.Substitute() можно заменить на Replace(), но в таком случае, код не будет работать в более ранних версиях, например, MS Excel 97
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно два антивируса использовать? Mir1 Любые вопросы от новичков 7 10.03.2012 13:52
Как сделать, чтобы глобальные переменные можно было вводить с Tdit Gal40na С/С++ 0 06.06.2011 00:41
Можно ли в Delphi использовать код C++ Spider Delphi 14 06.01.2006 13:39
Можно ли использовать Paradox7 через BDE xelan Вопросы начинающих программистов 1 23.05.2005 02:50
Можно ли использовать COM объекты в обероне Phinc Oberon 2 23.03.2005 18:50
Можно ли использовать конструктор повторно actung С/С++ 39 06.02.2005 12:34
Как можно использовать MFC в Builder EDkan C++ Builder 4 28.01.2005 17:43
Можно ли использовать PHP для Web-программирования hazy Вопросы начинающих программистов 1 08.12.2004 09:47
Можно ли Range задавать двумя чиленными индексами? yurasv Visual Basic 3 01.11.2004 18:19
Можно ли во ремя работы программы создавать новые переменные Gold_Dreamer Delphi 2 11.08.2004 12:54
Как создать и разместить переменные к которым можно иметь доступ из любого окна прогр вова123 Visual C++ 1 11.07.2004 22:57
Можно ли использовать DDK под NT в WinXP air Железо. Написание драйверов 3 11.02.2004 13:15



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов