excel 宏(如何执行引用单元格内的代码)

Worksheets("Sheet1").Range("A1").Value ‘这可以获取A1单元格的内容,A1的内容是变动的宏代码,
如:
A1内容为:msgbox "Hello!" 执行 msgbox "Hello!"
A1内容为:Range("G6").Select 执行Range("G6").Select

请告诉指点,谢谢!
Private Sub CommandButton1_Click()
Worksheets("Sheet1").Range("A1").Value ‘无法执行
‘‘’‘’‘如:A1内容为:msgbox "Hello!" 执行 msgbox "Hello!"
End Sub

基本思路:向指定模块指定过程动态写入单元格A1内容并实时调用。

Sub 引用单元格字符串型代码并执行()
 Dim sr, ksh, zh
 On Error Resume Next
 ksh = ThisWorkbook.VBProject.VBComponents("yyzx").CodeModule.ProcBodyLine("yyrgzx", vbext_pk_Proc)
 If Err.Number = 35 Then '判断yyrgzx过程是否存在
  sr = "Sub yyrgzx()" & vbCrLf & Cells(1, 1) & vbCrLf & "End Sub"
  With ThisWorkbook.VBProject.VBComponents("yyzx").CodeModule
   .AddFromString sr
  End With
  Call 引用
 Else
  With ThisWorkbook.VBProject.VBComponents("yyzx").CodeModule
   ksh = .ProcBodyLine("yyrgzx", vbext_pk_Proc)
   zh = .ProcCountLines("yyrgzx", vbext_pk_Proc)
   .DeleteLines ksh, zh - 1
  End With
  sr = "Sub yyrgzx()" & vbCrLf & Cells(1, 1) & vbCrLf & "End Sub"
  With ThisWorkbook.VBProject.VBComponents("yyzx").CodeModule
   .AddFromString sr
  End With
  Call 引用
 End If
End Sub
Sub 引用()
Call yyrgzx
End Sub

具体参见:http://jingyan.baidu.com/article/19192ad83a7965e53e57079d.html

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-27
当然无法执行
Worksheets("Sheet1").Range("A3").Value ‘

代表是对这个单元格值的引用,你没有写要干什么,是给这个单元格赋于新值,还是什么的
Worksheets("Sheet1").Range("A3").Value 是一个属性


Private Sub CommandButton1_Click()
dim a
a=Worksheets("Sheet1").Range("A3").Value ‘
End sub



Private Sub CommandButton1_Click()
Worksheets("Sheet1").Range("A3").Value=5
End Sub



Private Sub CommandButton1_Click()
msgbox Worksheets("Sheet1").Range("A3").Value
End Sub

都是可以执行的追问

就是执行引用单元格的代码啊,楼下的那个思路不会写,感觉越来越不会使用百度了,还是技术帖子都不容易出现了。。。

追答

终于看明白了
呵呵,代码是放在单元格里的。呵呵

好奇怪的做法

你要的,EXCEL是做不到的

本回答被网友采纳
第2个回答  推荐于2016-05-16

    利用 宏 把 以上代码写入另一个模块的某个函数

    调用执行这个函数


目前资料没在手上;  晚上联系可以给你个样品.

追问

我上夜班,麻烦有时间给我写一个,或给个样本,万分感谢。

追答

你没悬赏分,我自己要5分,应该不算过分;

详细见副本

如果可以请采纳!!

本回答被提问者采纳
相似回答