回 帖 发 新 帖 刷新版面

主题:弄的我睡不着的基础问题

还是在 excel 里

我录制了一个关于生成图表的宏,其中源数据区的选择代码我认为是这一句
 ActiveChart.SetSourceData Source:=Sheets("数据处理").Range(H5:H30), PlotBy:= _
        xlColumns

我想实现通过代码控制 源数据区 选择问题

通过在网络上查找资料
将关于Range的部分修改成Range(Cells(x, 6), Cells(y, 6))
x=5,y=30都已经定义.
但是调试时提示:方法'Cells'作用于对象'_Giobal'失败

我承认VB基础薄弱..但我手里的那份VBA资料里也没提到 range 的基本句法..只好再来这里求助..
顺便请大家给我介绍一份比较不错的VBA资料

回复列表 (共40个回复)

11 楼


    If Selection.Address(False, False) <> "A1:A7" Then
        Exit Sub
    End If

或者:


    If Selection.Address<> "$A$1:$A$7" Then
        Exit Sub
    End If

要判断所有Cell是否为空:

    Dim oCell As Range
    For Each oCell In Selection.Cells
        If IsEmpty(oCell) Then
            Exit Sub
        End If
    Next

    Set oCell = Nothing

元旦节后才会再上网了,祝节日快乐。

12 楼

下班了,下午再来试吧.先去打指纹.

13 楼

新元年快乐~

14 楼

我只用了判断为空的条件。略加修改现在已解决。

不过判断是否是在A列选择数据定的太死,只判断A1:A7。这个并不合适。

节后再说吧

15 楼

用"If Selection Is nothing Then", 可能行不通,除非没有工作表打开或者隐藏,就算是开个新的工作表,默认的Selection就是A1。

如果还没有达到理想的判断,请告诉你想要的详细判断条件(一个或者多个),再来看看怎么做。

16 楼

通过你11楼的代码

我实现了对所选为空的判断

但是,所选不为空并不满足要求.
比如:  所选必须是数据(因为selection也可能是图表,控件等等.这一点无法判断)
更进一步
要求必须是A列的数据.(是A列就行,不能指定A1:A7)
条件这样设置我想就足够严谨了.不过我想最主要的还是判断所选必须是数据,不然容易出现运行出错.

17 楼


    If Selection.Columns.Count <> 1 And _   
    Selection.Cells(1, 1).Column <> 1 Then 
        Exit Sub
    End If

"Selection.Columns.Count <> 1"判断是否只选择了一列,选择多列就不符合。
"Selection.Cells(1, 1).Column <> 1"判断所在列是否在A列。

对于数字判断,用isnumeric函数就行了:

    Dim oCell As Range
        
    For Each oCell In Selection.Cells
        If Not IsNumeric(oCell) Then
            Exit Sub
        End If
    Next

还有,如果要判断所选单格的个数:

    If Selection.Cells.Count < 7 Then
        Exit Sub
    End If

18 楼

条件的设置.我自己再琢磨琢磨吧.我想我应该能拿下.

下面又是一个数据区域选择
ActiveChart.SeriesCollection(1).XValues = "=数据处理!R2C1:R64C1"

我还是想用变量控制,实现 r2c1:r(2+a)c1 的区域选择  该怎么写呢?(a 是我程序中生成的一个整数)

19 楼

Range(Cells(2,1), Cells(2+a, 1))

20 楼

这个句法在前面的帖子中您已经教会我了

但是放在这句代码中却不知道该怎么用,还请指教.

我来回复

您尚未登录,请登录后再回复。点此登录或注册