Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4717|回复: 12

[已解决]老师帮忙解决一下vba运行时错误1004

[复制链接]
发表于 2014-1-7 06:22 | 显示全部楼层 |阅读模式
各位老师好,请帮忙看一下运行时错误1004,方法‘range’作用于对象’_Global’时失败是什么原因,如何解决
我学习时,按书中的例题创建了一个用户窗体,里边插入了一个TreeView控件,在窗体初始化中的代码如下:
Private Sub UserForm_Initialize()
    Dim nodX As Node
    Dim rng As Range
    Const X = "分类"   
    With TreeView1.Nodes
    .Add Key:=X, Text:=X
    For Each rng In Range("分类")
    .Add relative:=X, relationship:=tvwChild, Key:=X & rng, Text:=rng
    Next rng
    End With
    Set nodX = TreeView1.Nodes.Add(2, tvwChild, "L", "交通")
    Set nodX = TreeView1.Nodes.Add("L", tvwChild, , "飞机")
    Set nodX = TreeView1.Nodes.Add("L", tvwChild, , "火车")
    Set nodX = TreeView1.Nodes.Add(3, tvwChild, "R", "中国文化")
    Set nodX = TreeView1.Nodes.Add("R", tvwChild, , "建筑")
    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "F", "服饰")
    Set nodX = TreeView1.Nodes.Add("R", tvwChild, , "街道")
    Set nodX = TreeView1.Nodes.Add("F", tvwChild, , "汉族服饰")
    Set nodX = TreeView1.Nodes.Add("F", tvwChild, , "少数民族服饰")
    nodX.EnsureVisible   
    Set nodX = Nothing   
End Sub
在运行到红线标示的语句是出错,提示运行时错误1004
先谢谢老师了!
Book1.rar (12.33 KB, 下载次数: 9)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-1-7 07:59 | 显示全部楼层
回复

使用道具 举报

发表于 2014-1-7 08:01 | 显示全部楼层
工作簿打開時應該激活窗體,你的什麽都沒寫
回复

使用道具 举报

发表于 2014-1-7 08:44 | 显示全部楼层
    For Each rng In Range("分类")
这里错了,没有一个叫分类的名称。
回复

使用道具 举报

发表于 2014-1-7 08:47 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub UserForm_Initialize()
  2.     Dim nodX As Node
  3.     Dim rng As Range
  4.     Const X = "分类"   '声明X=字符串分类
  5.     With TreeView1.Nodes
  6.         .Add Key:=X, Text:=X
  7.         '    For Each rng In Range("分类")
  8.         '    .Add relative:=X, relationship:=tvwChild, Key:=X & rng, Text:=rng
  9.         '    Next rng
  10.         '    End With
  11.         Set nodX = TreeView1.Nodes.Add(1, tvwChild, "L", "交通")
  12.         Set nodX = TreeView1.Nodes.Add("L", tvwChild, , "飞机")
  13.         Set nodX = TreeView1.Nodes.Add("L", tvwChild, , "火车")
  14.         Set nodX = TreeView1.Nodes.Add(3, tvwChild, "R", "中国文化")
  15.         Set nodX = TreeView1.Nodes.Add("R", tvwChild, , "建筑")
  16.         Set nodX = TreeView1.Nodes.Add("R", tvwChild, "F", "服饰")
  17.         Set nodX = TreeView1.Nodes.Add("R", tvwChild, , "街道")

  18.         Set nodX = TreeView1.Nodes.Add("F", tvwChild, , "汉族服饰")
  19.         Set nodX = TreeView1.Nodes.Add("F", tvwChild, , "少数民族服饰")
  20.         nodX.EnsureVisible    '使节点可见
  21.         Set nodX = Nothing    '展开各级节点
  22.     End With
  23. End Sub
复制代码
这样可以用下。
回复

使用道具 举报

 楼主| 发表于 2014-1-7 11:31 | 显示全部楼层
hwc2ycy 发表于 2014-1-7 08:47
这样可以用下。

谢谢老师帮忙
我按老师说的做了,可还是出错,运行时错误35600 索引超出边界
回复

使用道具 举报

发表于 2014-1-7 11:35 | 显示全部楼层
qingzhen322 发表于 2014-1-7 11:31
谢谢老师帮忙
我按老师说的做了,可还是出错,运行时错误35600 索引超出边界

你用的我贴的代码还出错了?
我这是测试过的,你用的什么版本的?


回复

使用道具 举报

 楼主| 发表于 2014-1-7 16:16 | 显示全部楼层
hwc2ycy 发表于 2014-1-7 11:35
你用的我贴的代码还出错了?
我这是测试过的,你用的什么版本的?

我用的07版啊
回复

使用道具 举报

 楼主| 发表于 2014-1-7 16:19 | 显示全部楼层
hwc2ycy 发表于 2014-1-7 11:35
你用的我贴的代码还出错了?
我这是测试过的,你用的什么版本的?

我觉得注释掉了那几行后,是不是就没有顶级节点了
回复

使用道具 举报

发表于 2014-1-7 17:34 | 显示全部楼层
qingzhen322 发表于 2014-1-7 16:19
我觉得注释掉了那几行后,是不是就没有顶级节点了

从运行的结果去推证。
我这里注释的那几行是因为你的工作表并没有指定的名称。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 13:17 , Processed in 0.414126 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表