首页 > 解决方案 > 为什么 Range.Value = Left(....) 不起作用?

问题描述

我对 VBA 很陌生,所以这可能有一个非常简单的答案!

我正在尝试使用 Left 函数来生成一列中单元格的第一个数字的字符串,但是由于我不明白的原因,当我使用 Range.Value = Left(...) 时,它没有放我从 Left(...) 获得的值进入单元格。

代码完成运行后,我留下了一个空白列 A。

任何人都可以解释为什么会发生这种情况并建议如何解决它。

我写的代码是:

Dim r As Integer
Dim var As Variant
r = Range("B1").CurrentRegion.Rows.Count

For var = 2 To r
    Range("A" & var).Value = Left(Cells(var, 1).Text, 1)
Next var

非常感谢。

标签: vbaexcel

解决方案


这将是另一种方法,扫描 B 中的单元格并将每个单元格的第一个字母写入其左侧的单元格中:

Dim c As Range
For Each c In Range("B1", "B" & Cells(Rows.Count, "B").End(xlUp).Row).Cells
    c.Offset(0, -1).Value = Left(c.Text, 1)
Next

注意:严格来说,限定范围是一个好习惯:

Dim c As Range
With Worksheets("YOUR_SHEET_NAME_HERE")
For Each c In .Range("B1", "B" & .Cells(.Rows.Count, "B").End(xlUp).Row).Cells
    c.Offset(0, -1).Value = Left(c.Text, 1)
Next
End With

推荐阅读