我有一个宏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
答案 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
如果您需要任何帮助我,请随时与我们联系。