未填充VBA左功能目标范围

时间:2014-07-31 17:37:00

标签: 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

'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

3 个答案:

答案 0 :(得分:2)

错误在这里

Left(SourceRange(i, 10).Value, 30)

您已将SourceRange定义为细胞范围

Set SourceRange = Worksheets("JE_data").Range(Cells(2, 10), Cells(LastRow, 10))

你再次指向我,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)

对于DestinationRange以及

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

希望这有帮助

答案 1 :(得分:1)

当我想在工作表中找到最后一个单元格时,我使用它:

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

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

这个命令的优点在于它重新设置了电子表格指针,以便删除添加和删除行中未使用的空间。

答案 2 :(得分:1)

只是快速查看它 - 尝试替换

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

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