我是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
非常感谢。
答案 0 :(得分:0)
很可能您没有完全声明某些内容-工作表或当前区域中的行。从这样简单的内容开始,以了解其工作原理:
Public Sub HereComesTheCode()
Dim r As Long: r = 10
Dim i As Long
Dim wks As Worksheet: Set wks = Worksheets(1)
For i = 2 To r
With wks
.Range("A" & i) = Left(.Cells(i, 1), 1)
End With
Next
End Sub
答案 1 :(得分:0)
这是另一种方法,扫描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