运行时错误424 要求对象 。老问题,但我有点自己的疑问_涉及到赋值

zyxvic1981 2011-04-14 05:18:01
关于 “运行时错误424 要求对象 ”这个可能是老问题了 。我搜了一下网上的解决 。没有解决关于我的疑问的。
-------- 下面这个例子 是word 帮助里的 , 当然,直接运行 ,肯定是有问题的 begin -----------------
Sub SelectRange()
Dim rngParagraph As Range

Set rngParagraph = ActiveDocument.Paragraphs(2).Range

rngParagraph.SetRange Start:=rngParagraph.Start, _
End:=ActiveDocument.Paragraphs(3).Range.End
rngParagraph.Select

Selection.Font.Italic = True
End Sub
-------- 下面这个例子 是word 帮助里的 当然,直接运行 ,肯定是有问题的 end -----------------


自己试了一下 ,代码如下:

Sub Test()
Dim objWordApp As Object
Dim objWord As Object
'Dim objWord As Word.Document

Dim myRange As Object

Dim mySelection As Word.Selection
' Dim mySelection As Object
' Dim mySelection As Selection


' Dim rngParagraph As Range
Dim rngParagraph As Object



Set objWordApp = CreateObject("Word.Application")

Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")



Set rngParagraph = objWord.Paragraphs(1).Range

rngParagraph.SetRange Start:=rngParagraph.Start, _
End:=objWord.Paragraphs(2).Range.End
Set mySelection = rngParagraph.Select ' 运行到这里错误 ,错误为 “运行时错误424 要求对象”

'rngParagraph.Select 返回的不是selection 对象吗 ?为什么赋值出现问题,我要怎么声明才对了
' rang对象 要怎么样的方式 ,才可以转化为SELECTION 对象啊 ?

'以下三种方式都试了不可以
' Dim mySelection As Word.Selection
' Dim mySelection As Object
' Dim mySelection As Selection



mySelection.Font.Size = 25
objWord.Save
objWord.Close
objWordApp.Quit

End Sub


...全文
4805 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyxvic1981 2011-04-15
  • 打赏
  • 举报
回复
呵呵 ,问题解决。还是自己理解不深哦
king06 ,你是个热心肠哦 ,过会把分给你咯 。先放一下。
正确代码如下
----
Sub test()
Dim objWordApp As Object
Dim objWord As Object

Dim myRange As Object

Dim mySelection As Object


Dim rngParagraph As Object



Set objWordApp = CreateObject("Word.Application")

Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")



Set rngParagraph = objWord.Paragraphs(1).Range

rngParagraph.SetRange Start:=rngParagraph.Start, _
End:=objWord.Paragraphs(2).Range.End

rngParagraph.Select
Set mySelection = objWord.ActiveWindow.Selection
'呵呵 ,我应该将上面两句结合来使用,而不能分割来使用
mySelection.TypeText Text:="nihao"


objWord.Save

objWord.Close
objWordApp.Quit

End Sub
king06 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zyxvic1981 的回复:]
Selection.TypeText Text:="nihao"
[/Quote]
Selection 是什么? 你这代码不是在word上的宏里面运行的,需要定义Selection对象.
zyxvic1981 2011-04-15
  • 打赏
  • 举报
回复
1、 2楼的解答跟现在不是一个问题(呵呵,不过对上个问题,很关键)

2、我现在是拿着word 帮助上的例子来修改(因为直接拿他的代码,肯定调试不出来)我就你1楼的解答
做了如下的改动
--------------begin--------
Sub btnWorkSummaryUpLoad()
'Sub RangAndSelection()
'这个过程关于 rang 和 selection 之间的转换
Dim objWordApp As Object
Dim objWord As Object
'Dim objWord As Word.Document

Dim myRange As Object

Dim mySelection As Word.Selection
' Dim mySelection As Object
' Dim mySelection As Selection


' Dim rngParagraph As Range
Dim rngParagraph As Object



Set objWordApp = CreateObject("Word.Application")

Set objWord = objWordApp.Documents.Open("d:\测试文件.doc")



Set rngParagraph = objWord.Paragraphs(1).Range

rngParagraph.SetRange Start:=rngParagraph.Start, _
End:=objWord.Paragraphs(2).Range.End

rngParagraph.Select
Selection.TypeText Text:="nihao" ' 问题出在这 "error 对象不支持该属性和方法"


objWord.Save

objWord.Close
objWordApp.Quit

End Sub
-----------end-------------

[Quote=引用 2 楼 king06 的回复:]
引用楼主 zyxvic1981 的回复:
' rang对象 要怎么样的方式 ,才可以转化为SELECTION 对象啊 ?

你上个帖子里面我已经写了

VB code
myRange.Select
Set mySelection = objWord.ActiveWindow.Selection
[/Quote]
king06 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 zyxvic1981 的回复:]
' rang对象 要怎么样的方式 ,才可以转化为SELECTION 对象啊 ?
[/Quote]
你上个帖子里面我已经写了
  myRange.Select
Set mySelection = objWord.ActiveWindow.Selection
king06 2011-04-15
  • 打赏
  • 举报
回复
Select方法是指选定指定的对象这个操作,并没有返回值

2,506

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧