使用带有文本

时间:2018-05-29 14:33:37

标签: excel vba

我试图创建一个VBA宏,它将在D列中查找特定值并将文本输入其他3个。我相信我已经接近得到了我需要的答案,但我不确定我想要让它发挥作用。

这是我到目前为止所拥有的:

Dim rng As range
Dim i As Long

'Set the range in column D you want to loop through
**Set rng = range("D3:D")**
For Each cell In rng
    'Test cell for CR
    If cell.Value = "CR" Then
        'write to adjacent cell
        cell.Offset(0, 3).Value = "CREDIT"
        cell.Offset(0, 5).Value = "CREDIT"
        cell.Offset(0, 6).Value = "CREDIT"
    End If
Next
**Set rng = range("G3:G")**
For Each cell In rng
    'test for empty cell
    If cell.Value = "" Then
        'write to adjacent cell
        cell.Offset(0, 0).Value = "FREIGHT"
        cell.Offset(0, 2).Value = "FREIGHT"
        cell.Offset(0, 3).Value = "FREIGHT"
    End If
Next

End Sub

带有**的行是我遇到错误的地方。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

试试这个:

Set rng = Range("D3", Cells(Rows.Count, "D").End(xlUp))

答案 1 :(得分:0)

这是一种基于给定单元格及其End(xlDown)声明范围的方法:

Option Explicit

Sub TestMe()

    Dim myRange As Range
    Dim firstCell   As Range
    Dim lastCell As Range

    Set firstCell = Worksheets(1).Range("A12")
    Set lastCell = firstCell.End(xlDown)
    Set myRange = Range(firstCell, lastCell)

End Sub

这个想法是给定工作表上的两个单元格可以定义一个范围。因此,通过定义它们,也可以定义范围。

这两个单元格是firstCelllastCell。有趣的是,您需要仅声明worksheet的父对象(firstCell),然后lastCellmyRange使用相同的对象。