根据另一个单元格

时间:2016-12-23 12:10:12

标签: vba

我有一个宏GETGUID()。只要相应的列'A'中有一个值,就会想要在列'B'上调用宏。如果列A为空,则不应为相应的列B调用GETGUID宏。

我尝试了以下代码,但它无效。对于测试,我使用范围A1:A20,但它可以是任何范围。如果我在B列中手动输入GETGUID()宏工作正常,但我希望每当A列中的相应单元格具有某个值时它就能工作。

我使用宏的知识并不是那么好。这是我正在尝试的代码:

Public Function GetGUID() As String
    GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)
End Function

Dim cell_to_test As Range, cells_changed As Range

Set cells_changed = Target("A1:A20")
Set cell_to_test = Range("B1:B20")

If Not Intersect(cells_changed, cell_to_test) Is Nothing Then
    Range("B1:B12") = GetGUID()
End If

1 个答案:

答案 0 :(得分:1)

我创建了一个简单的宏,它循环遍历Worksheets(1).Range("A1:A20")声明的每个单元格。如果存在值(不是vbNullString),则右侧的列将填充GUID。

 Private RANGE_CELL As Range

 Public Function GetGUID() As String
        GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)
    End Function

Public Sub Populate_B()
    For Each RANGE_CELL In Worksheets(1).Range("A1:A20")
        If RANGE_CELL <> vbNullString Then
            RANGE_CELL.Offset(, 1).Value = GetGUID
        Else
            '// Do nothing.
        End If
    Next RANGE_CELL
End Sub

如果您需要任何帮助我,请随时与我们联系。