| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2241 人关注过本帖
标题:VB操作Excel动态单元格选择问题
只看楼主 加入收藏
lypower
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
VB操作Excel动态单元格选择问题
VB操作Excel绘制图表,当N=5时,图表横坐标为5个值,当N=i时,图表横坐标为i个值,横坐标单元格选择怎么写Char.FullSeriesCollection(i).XValues = "sheet(1)!$B$6:$F$6",请各位前辈指教!
搜索更多相关主题的帖子: 动态 Excel 
2015-06-09 09:33
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
看看有没有帮助,简单写了一个画图表的例子
程序代码:
Dim EXAPP As Excel.Application
Dim WB As Excel.Workbook
Dim sht As Excel.Worksheet
Dim chartPage As Excel.Chart
Dim xlCharts As Excel.ChartObjects
Dim myChart As Excel.ChartObject
Dim chartRange As Excel.Range


Private Sub Command1_Click()
  Set xlCharts = sht.ChartObjects
  Set myChart = xlCharts.Add(10, 80, 300, 250)
  Set chartPage = myChart.Chart
  Set chartRange = sht.Range("a1", "d5")
  Call chartPage.SetSourceData(Source:=chartRange)
  chartPage.ChartType = Excel.XlChartType.xlColumnClustered
End Sub

Private Sub Form_Load()
  Set EXAPP = CreateObject("excel.application")
  EXAPP.Visible = True
  Set WB = EXAPP.Workbooks.Open("c:\chart.xlsx")
  Set sht = WB.Worksheets("sheet1")
End Sub

Private Sub Form_Unload(Cancel As Integer)
  WB.Close
  Set myChart = Nothing
  Set xlCharts = Nothing
  Set sht = Nothing
  Set WB = Nothing
  Set EXAPP = Nothing
End Sub


大开眼界
2015-06-09 10:09
lypower
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-9
收藏
得分:0 
回复 2楼 lianyicq
你采用的还是固定单元格啊,我需要的是动态单元格,比如单元格cells(4,i),我想知道同一行的单元格选择“$B$6:$F$6”怎么用i表示
2015-06-09 10:21
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
Set chartRange = sht.Range("a1", "d5")
内的字符串你不能换成一个变量,做成你说的动态?

大开眼界
2015-06-09 10:23
lypower
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-9
收藏
得分:0 
回复 4楼 lianyicq
我现在就纠结在这个问题上
For i = 1 To Num_Damper_Corner
       Chart_damper.SeriesCollection.NewSeries
       Set ChartRange = SheetDamper1.Range(Cells(7, Num_Damper_Mode * (i - 1) + 2), Cells(7, Num_Damper_Mode * (i - 1) + 6))
       Chart_damper.FullSeriesCollection(i).XValues = "数据!$B$6:$F$6"
       Chart_damper.FullSeriesCollection(i).Values = ChartRange
Next i
按你说的方法,定义单元格范围用rang("b7","f7")可以,但用上面的cell就不行
2015-06-09 11:03
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:20 
"sheet(1)!$B$6:$F$6"

你这个本身是字符串,按坐标的格式生成字符串再给属性可以不?

首先,列,按1=A,2=B 换算成 字母,
然后再加上行,就可以了。

$B$6:$F$6 = "$" & 列号转列名(2) & "$" & 行号 &":$" & 列号转列名(6) & "$" & 行号

Char.FullSeriesCollection(i).XValues = "sheet(1)!" & "$" & 列号转列名(2) & "$" & 行号 &":$" & 列号转列名(6) & "$" & 行号

程序代码:
Private Sub Command1_Click()

Cls
Print 1, 列号转列名(1)
Print 26, 列号转列名(26)
Print 27, 列号转列名(27)
Print 255, 列号转列名(255)


End Sub

Public Function 列号转列名(cs As Long) As String
'cs 范围 =1-255 ,根据你的需要定义变量类型
Dim i As Long, j As Long
Dim s As String

If cs < 1 Or cs > 255 Then
    Exit Function
End If

i = (cs - 1) Mod 26             'A要余0,Z余25
j = (cs - 1) \ 26               '26得0,27才能得1

If j > 0 Then                   '有第一位
    s = Chr(64 + j)
End If

s = s & Chr(65 + i)             '生成第二位

列号转列名 = s                  '返回结果

End Function

授人于鱼,不如授人于渔
早已停用QQ了
2015-06-09 11:27
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
回复 5楼 lypower
  Set chartRange = sht.Range(Cells(1, 1), Cells(1, 4))
我改成这样也没问题

大开眼界
2015-06-09 11:34
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:0 
把横坐标也定义为range对象

大开眼界
2015-06-09 12:03
lypower
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2015-6-9
收藏
得分:0 
回复 6楼 风吹过b
解决了,谢谢
2015-06-09 12:17
快速回复:VB操作Excel动态单元格选择问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018619 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved