excel vba代码问题,总是报语法错误,请问是什么原因?

Sub MakeRange()

For i = 3 To Sheet1.[A200].End(xlUp).Row
j = Sheet1.Cells(1, 100).End(xlToLeft).Column
ActiveWorkbook.Names.Add _
Name:=cells(i,1), _
RefersToR1C1:="=Sheet1!R"&i&"C2:R'&i&"c"&j
Next
End Sub

这个代码运行总是报语法错误,哪位大佬可以指点一下?感谢

报错的那句修改如下:
ActiveWorkbook.Names.Add Name:=Cells(i, 1), RefersToR1C1:="=Sheet1!R" & i & "C2:R" & i & "C" & j
存在的问题:一是可能多行语句处理缺少空格,二是&不要和变量连接,三是字符串应当使用双引号。追问

谢谢大佬!!虽然代码不报错了,但是效果也还是出不来TT,请问是什么原因呢?定义域都没有成功

追答

首先运行是否报错?进一步调试,看看i、j值是多少,cells(i,1)的值是多少,打开【名称管理器】看看是否有这样的名称

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-03
当然会出错:
因为你加密了VBA工程,而加密的VBA工程的里的代码就会被保护。
也就是说VBA工程加密后,不可以增加删除代码,不可以增加删除窗体,不可以增加删除模块和类模块。而你的代码中:
Set?usForm?=ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)这个是增加一个窗体,这对受保护的工程来说是不被允许的。除了你这个,还有例如ThisWorkbook.VBProject.VBComponents.Remove?XXXXX(删除代码)
ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).Name?=?
相似回答