Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 循环使用CStr增加行数_Excel_Vba - Fatal编程技术网

Excel 循环使用CStr增加行数

Excel 循环使用CStr增加行数,excel,vba,Excel,Vba,我正在一个文件(垃圾数据.xlsx)中循环,以捕获(此工作簿)的数据。对于范围C1,它直接引用垃圾数据文件中的数据,通过使用CStr增加垃圾数据文件中的行号,效果非常好。但是,当我使用垃圾数据文件中单元格内容的公式去除A1范围的左三个字符(=左(C1,3))时,我得到了一条语法错误消息。我试图做的有什么问题吗 Dim r As Integer 'for row count in junk data file r = 1 Workbooks("junk data.xlsx").Sheets("sh

我正在一个文件(垃圾数据.xlsx)中循环,以捕获(此工作簿)的数据。对于范围C1,它直接引用垃圾数据文件中的数据,通过使用CStr增加垃圾数据文件中的行号,效果非常好。但是,当我使用垃圾数据文件中单元格内容的公式去除A1范围的左三个字符(=左(C1,3))时,我得到了一条语法错误消息。我试图做的有什么问题吗

Dim r As Integer 'for row count in junk data file
r = 1
Workbooks("junk data.xlsx").Sheets("sheet1").Activate

'loop through junk data file until an empty row is found
 Do While Cells(r, 1) <> ""
    ThisWorkbook.Activate
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=LEFT('[junk data.xlsx]Sheet1'!R" & CStr(r) &"C1",3)"

    Range("C1").Select
    ActiveCell.FormulaR1C1 = "='[junk data.xlsx]Sheet1'!R" & CStr(r) & "C8"

    Workbooks("junk data.xlsx").Sheets("sheet1").Activate
    r = r + 1
Loop
垃圾数据文件中行计数的“将r作为整数进行调整” r=1 工作簿(“垃圾数据.xlsx”)。工作表(“表1”)。激活 '循环浏览垃圾数据文件,直到找到空行 “当单元格(r,1)”时执行” 此工作簿。激活 范围(“A1”)。选择 ActiveCell.FormulaR1C1=“=左('[junk data.xlsx]Sheet1'!R'&CStr(R)和“C1”,3)” 范围(“C1”)。选择 ActiveCell.FormulaR1C1=“=”[junk data.xlsx]Sheet1'!R“&CStr(R)和“C8” 工作簿(“垃圾数据.xlsx”)。工作表(“表1”)。激活 r=r+1 环 一个引号太多:

 &"C1,3)"

也许我误解了您的意图,但Left(s,3)并没有“去掉左边的3个字符”。它的作用正好相反。它保留了这些字符并删除了所有其他字符。您似乎想要Mid():


CStr()在这里是没有意义的,因为如果r是整数,那么连接运算符&将自动将r转换为字符串。无论你遇到什么问题,它都与CStr无关。Juliusz-成功了!我现在可以完成宏的其余部分。我是一个新手,永远不会这样做。
 &"C1,3)"
Sub test()
    Dim s As String
    s = "Hello World"
    MsgBox Left(s, 3) 'diplays "Hel"
    MsgBox Mid(s, 4) 'displays "lo world"
End Sub