2016-12-23 7 views
0

マクロがGETGUID()です。対応する列 'A'に値があるときは常に、列 'B'のマクロを呼び出すとします。列Aが空の場合、対応する列BのGETGUIDマクロを呼び出さないでください。別のセルの値に基づいて、1つのセルの特定のマクロを呼び出します。

次のコードを試しましたが、動作しません。テストでは、範囲A1:A20を使用していますが、範囲は任意です。 GETGUID()マクロは、B列に手動で入力するとうまく動作しますが、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

を私は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 

何か必要な場合は、喜んでお知らせください。

+1

あなたは、列Aを使用すると、ワークシートのページに次のマクロを追加することができます移入されたときにGUIDを追加するために探している場合: 'ます。Private Sub Worksheet_Change(ByValの対象を範囲) 次にTarget.Column = 1 もしあればTarget.Value <> vbNullString Then Target.Offset(、1).Value = GetGUID End If End Sub' – Nulled

+0

ありがとう@Nullled。私はこのコードだけでなく、上記で提供されたものを試しましたが、うまくいきません。私の非常に限られた知識のために理解できない小さなものでなければなりません.PRVATE RANGE_CELL As Range パブリック関数GetGUID()As String GetGUID = Mid $(CreateObject( "Scriptlet.TypeLib")。GUID、2、 36) エンド機能 プライベートサブWorksheet_Change(ByValの対象を範囲) 場合Target.Column = 1そして 場合Target.Value <> vbNullStringそしてTarget.Offset(1).Valueの= GetGUID エンドEND IF Sub – shuru

+0

VBAエディタを開き、GUIDが必要なワークシートをダブルクリックしてコメントにコードを貼り付ける必要があります。コードがワークシート内に入ると、VBAエディタを閉じることができます。Excelでシートに移動し、列Aに値を追加します。マクロは列BのセルにGUIDを追加します。あなたが受け取ったデバッグメッセージを私に送ることができますか? – Nulled

関連する問題