Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
未填充VBA左功能目标范围_Vba_Excel - Fatal编程技术网

未填充VBA左功能目标范围

未填充VBA左功能目标范围,vba,excel,Vba,Excel,left()函数(不是Leftsub())未填充目标范围。我做错了什么?谢谢你 Sub LeftSub() Dim SourceRange As Range, DestinationRange As Range, i As Integer, LastRow As Integer Worksheets("JE_data").Activate Range("J2").Activate LastRow = Cells(Rows.count, "A").End(xlUp).row 'Defin

left()函数(不是Leftsub())未填充目标范围。我做错了什么?谢谢你

Sub LeftSub()

Dim SourceRange As Range, DestinationRange As Range, i As Integer, LastRow As Integer

Worksheets("JE_data").Activate
Range("J2").Activate


LastRow = Cells(Rows.count, "A").End(xlUp).row

'Define our source range:
Set SourceRange = Worksheets("JE_data").Range(Cells(2, 10), Cells(LastRow, 10))

'Define our target range where we will print.
'Note that this is expected to be of same shape as source
Set DestinationRange = Worksheets("JE_data").Range(Cells(2, 11), Cells(LastRow, 11))

'Iterate through each source cell and print left 30 characters in target cell
For i = 2 To SourceRange.count

    DestinationRange(i, 11).Value = Left(SourceRange(i, 10).Value, 30)

Next i

End Sub

当我想查找工作表中的最后一个单元格时,我使用以下方法:

llof=ActiveSheet.UsedRange.SpecialCells(xlLastCell).地址

llof=ActiveSheet.UsedRange.SpecialCells(xlLastCell).row


此命令的妙处在于它重新设置电子表格指针,以便删除添加和删除行时未使用的空间。

当我要查找工作表中的最后一个单元格时,我使用以下命令:

llof=ActiveSheet.UsedRange.SpecialCells(xlLastCell).地址

llof=ActiveSheet.UsedRange.SpecialCells(xlLastCell).row

此命令的妙处在于它重新设置了电子表格指针,以便删除添加和删除行时未使用的空间。

错误就在这里

Left(SourceRange(i, 10).Value, 30)
您已经将SourceRange定义为单元格范围

Set SourceRange = Worksheets("JE_data").Range(Cells(2, 10), Cells(LastRow, 10))
同样,你用i,10给你

.Range(Cells(2, 10), Cells(LastRow, 10))(i,10)
它指向相对于选定区域左上角单元格的单元格,这意味着(2+i,10+10)个单元格(因为(2,10)是选定范围的左上角单元格)不起作用。相反,您可以直接使用此命令

Left(Worksheets("JE_data").Cells(i,10).Value, 30)
以及目的地范围

Worksheets("JE_data").Cells(i, 11).Value = Left(Worksheets("JE_data").Cells(i,10).Value, 30)
希望这有帮助

错误就在这里

Left(SourceRange(i, 10).Value, 30)
您已经将SourceRange定义为单元格范围

Set SourceRange = Worksheets("JE_data").Range(Cells(2, 10), Cells(LastRow, 10))
同样,你用i,10给你

.Range(Cells(2, 10), Cells(LastRow, 10))(i,10)
它指向相对于选定区域左上角单元格的单元格,这意味着(2+i,10+10)个单元格(因为(2,10)是选定范围的左上角单元格)不起作用。相反,您可以直接使用此命令

Left(Worksheets("JE_data").Cells(i,10).Value, 30)
以及目的地范围

Worksheets("JE_data").Cells(i, 11).Value = Left(Worksheets("JE_data").Cells(i,10).Value, 30)

希望这对快速查看有帮助-尝试替换

DestinationRange(i,11)。Value=Left(SourceRange(i,10)。Value,30)


DestinationRange(i,1).Value=Left(SourceRange(i,1).Value,30)

仅从快速查看它开始-尝试替换

DestinationRange(i,11)。Value=Left(SourceRange(i,10)。Value,30)


DestinationRange(i,1).Value=Left(SourceRange(i,1).Value,30)

预期结果是什么,Left()值实际返回什么?预期结果是每个字符串左边的30个字符。源范围(从第2行开始的“J”列(某些单元格包含>30个字符),但上载有限制(30个字符),因此从技术上讲,无法将超过30个字符上载到目标范围(从第2行开始的“K”列)。谢谢“上载有限制(30个字符)”是什么意思?您可以尝试以下操作:1)debug.print SourceRange(i,10).value并查看这是否是要应用left()的源2)debug.print left(SourceRange(i,10).value,30)然后看看它是否给了你正确的答案。让我知道你的answerImmediate窗口是空的…这就是问题之一,源没有正确定义。其他一些帮助发布了答案,你可以尝试给出预期的结果,左边的()返回值?预期结果为每个字符串左侧30个字符。源范围(第2行开始的“J”列(某些单元格包含>30个字符),但上载有限制(30个字符),因此从技术上讲,无法将超过30个字符上载到目标范围(第2行开始的“K”列)。谢谢您“上载有限制(30个字符)”是什么意思?您可以尝试以下操作:1)debug.print SourceRange(i,10).value并查看这是否是您要应用的源left()2)debug.print left(SourceRange(i,10).value,30)并查看它是否给出了正确答案。让我知道你的answerImmediate窗口是空的……这是问题之一,源没有正确定义。其他一些帮助贴出了答案,你可以试试看,这很有帮助!!!只有一个问题:最后一行没有填充30个字符。我认为这是因为LastRow设置:LastRow=单元格(Rows.count,“J”).End(xlUp.row)。如何更改它,使最后一行也包含在目标列中?
单元格(Rows.count,“A”).End(xlUp)。row
这将返回从第一行开始的最后使用的行号。看起来您使用的是第二行的数据,所以只需将不必要的行减去,如下所示
LastRow=Cells(Rows.count,“J”)。End(xlUp)。row-1
谢谢您,Jagadish!!!它解决了我的最后一个难题。实际上它是LastRow=Cells(Rows.count,“J”).End(xlUp)。row+1。是的,它很有用!!!只有一个问题:最后一行没有填充30个字符。我认为这是因为LastRow设置:LastRow=单元格(Rows.count,“J”).End(xlUp.row)。如何更改它,使最后一行也包含在目标列中?
单元格(Rows.count,“A”).End(xlUp)。row
这将返回从第一行开始的最后使用的行号。看起来您使用的是第二行的数据,所以只需将不必要的行减去,如下所示
LastRow=Cells(Rows.count,“J”)。End(xlUp)。row-1
谢谢您,Jagadish!!!它解决了我的最后一个难题。实际上它是LastRow=单元格(Rows.count,“J”).End(xlUp)。row+1。