使用字符串修改对象属性.字符串创建对象属性

lifengid 2006-10-17 02:32:57
dim sFile
sFile=app.path & "\1.xls"
Dim oleExcel As Object
Set oleExcel = CreateObject("Excel.Application")
oleExcel.Visible = False
oleExcel.Workbooks.Open FileName:=sFile
' 从xls文件中读内容
msgbox oleExcel.Worksheets("Sheet1").Range("A1").Font.Size

dim strXX
strXX=".Size"
'我这句话如何写(或这种功能怎么实现)
msgbox oleExcel.Worksheets("Sheet1").Range("A1").Font & strXX
大侠们来看看有没有好办法!
...全文
252 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifengid 2006-10-18
  • 打赏
  • 举报
回复
k 给分失误 晕 楼上的大哥见谅.有没有办法重新给分?
lifengid 2006-10-18
  • 打赏
  • 举报
回复
谢谢楼上!一切OK~
lifengid 2006-10-17
  • 打赏
  • 举报
回复
多谢老大们啊 我回家马山实验. 看起来可以了~~~@@~_~
happy_sea 2006-10-17
  • 打赏
  • 举报
回复
此处可以用callbyname,比如:
dim r
r=callbyname(oleExcel.Worksheets("Sheet1").Range("A1"),strtype,vbget)
msgbox r
但是像oleExcel.Worksheets("Sheet1").Range("A1").Font.Size这种情况,只能是:
r=callbyname(oleExcel.Worksheets("Sheet1").Range("A1").Font,"Size",vbget)
而不能是:
r=callbyname(oleExcel.Worksheets("Sheet1").Range("A1"),"Font.Size",vbget)
Hassle 2006-10-17
  • 打赏
  • 举报
回复
CallByName 函数



执行一个对象的方法,或者设置或返回一个对象的属性。

语法

CallByName(object, procedurename, calltype,[arguments()])

CallByName 函数的语法有以下部分:

部分 描述
object 必需的;变体型(对象)。函数将要执行的对象的名称。
procedurename 必需的;变体型(字符串)。一个包含该对象的属性名称或者方法名称的字符串表达式。
calltype 必需的;常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。
arguments() 可选的:变体型(数组)。


说明

CallByName 函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。

在下面的例子中,第一行使用 CallByName 来设置一个文本框的 MousePointer 属性,第二行得到 MousePointer 属性的值,第三行调用 Move 方法来移动文本框:

CallByName Text1, "MousePointer", vbLet, vbCrosshair
Result = CallByName (Text1, "MousePointer", vbGet)
CallByName Text1, "Move", vbMethod, 100, 100
happy_sea 2006-10-17
  • 打赏
  • 举报
回复
就按fyming(农妇,山泉,有点田)朋友说的办吧,应该没有更简单的办法了。
lifengid 2006-10-17
  • 打赏
  • 举报
回复
如果能将字符串转换为所需求的属性名称就好了,指哪打哪啊.

先谢谢楼上了;~
.Net 使用反射机制可以实现,但是必须先知道被反射的类型,所以这样也不行啊.
lifengid 2006-10-17
  • 打赏
  • 举报
回复
with
.Size
.color
的确很好 可我要必须先列出所有.
如果我要返回所有的对象的话岂不是要写满所有的对象属性?

'我先在表里存储所有对象的属性名称
dim strType
strType=inputbox("请输入你要的属性类型","Font.name")
'或者strType=inputbox("请输入你要的属性类型","shape.width")

on error resume
msgbox oleExcel.Worksheets("Sheet1").Range("A1"). & strtype

if err.number<>0 then msgbox "可能不存在所请求的对象属性" & err.description

zzd8310 2006-10-17
  • 打赏
  • 举报
回复
帮顶
fyming 2006-10-17
  • 打赏
  • 举报
回复
with msgbox oleExcel.Worksheets("Sheet1").Range("A1").Font
.Size
.color
.name
end with
----------------
行不? ^_^
lifengid 2006-10-17
  • 打赏
  • 举报
回复
这个strXX 有没有办法转换为对象属性,否则
我要取得所有的属性要赋值的话
msgbox oleExcel.Worksheets("Sheet1").Range("A1").Font.Size
msgbox oleExcel.Worksheets("Sheet1").Range("A1").Font.color
msgbox oleExcel.Worksheets("Sheet1").Range("A1").Font.name
写很多 岂不是很烦.

2,506

社区成员

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

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