【发布时间】:2020-02-19 02:53:18
【问题描述】:
我正在尝试用这个子程序做一些事情。 首先我需要在每 18 行之后插入一行 然后我需要根据上一行中的字符串(即第一次迭代中的第 17 行)在 A 列中插入一个字符串。 最后我需要根据之前建立的字符串在第i行的B列再次插入一个字符串。
所以用外行的话来说,第 17 行会说 120F_CASH 我想找到“_”并从“_”左侧获取字符串中的字符,然后在第 18 行中,我想将 120F 和“_MULTI_STRAT”放入 A 列 在第 18 行的 B 列中,我想插入 "SSELECT PERF.IMST.INDEX WITH ENTITY = " & "120F" & "AND WITH CATEGORY1 = ""01"""
这是我的代码:
Option Explicit
Sub InsertRowEveryXrows()
Dim r As Long, lr As Long
Dim code As String
lr = Range("A" & Rows.Count).End(xlUp).Row
For r = 18 To lr Step 18
Rows(r).Insert Shift:=xlDown
Set code = Left(Range(Cells(r - 1, "A"), InStr(1, "_", Cells(r, "A")) - 1))
Cells(r, "A") = code & "_MULTI_STRAT"
Cells(r, "B") = "SSELECT PERF.IMST.INDEX WITH ENTITY = " & code & "AND WITH CATEGORY1 = ""01"""
Next r
End Sub
我收到一个编译错误:此行上的参数数量错误或属性分配无效:
设置代码 = Left(Range(Cells(r - 1, "A"), InStr(1, "_", Cells(r, "A")) - 1))
字符串的位置在 A 列的第 17 行 (r-1) 中,通过查找“_”找到字符数
我错过了什么? *仅供参考,我必须在下划线后添加一个空格才能在此处正确显示,但是,下划线后不应有空格。
【问题讨论】:
-
删除集。 Set 仅在分配给引用变量(例如对象)时使用。字符串不是引用变量。
-
我认为你的括号也是错误的
Range(Cells(r - 1, "A")需要是Cells(r - 1, "A")或只是split(Cells(r - 1, "A"),"_")(0)