2017-05-23 10 views
0

実行時にファイルエクスプローラを開き、ユーザーが特定のパスを選択すると、そのパスがアクティブセルに貼り付けられます。ここにコードがあります。マクロ全体を列に適用する

Sub CommandButton1_Click() 
    With Application.FileDialog(msoFileDialogFolderPicker) 
     .InitialFileName = IIf(ActiveCell.Value = "", ActiveWorkbook.Path, ActiveCell.Value) 
     .Title = "Please choose a folder" 
     .AllowMultiSelect = False 
     If .Show = -1 Then ActiveCell.Value = .SelectedItems(1) 
    End With 
End Sub 

は今、私は、ユーザーがマクロがアクティブになるコラムA内の任意の行をクリックするたびにその列Aを、ボタンではなく、全体の列に、このモジュールを割り当てる言いたくありません。私はこれを行うことができる方法はありますか?

答えて

1

フォルダの選択をトリガしたいシートのコードモジュールでこれを入れて:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

    If Target.Cells.CountLarge = 1 And Target.Cells(1).Column = 1 Then 
     With Application.FileDialog(msoFileDialogFolderPicker) 
      .InitialFileName = IIf(target.Value = "", _ 
          thisWorkbook.Path, target.Value) 
      .Title = "Please choose a folder" 
      .AllowMultiSelect = False 
      If .Show = -1 Then Target.Value = .SelectedItems(1) 
     End With 
    End If 

End Sub 

ダブルクリックの場合:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 

    If Target.Cells.CountLarge = 1 And Target.Cells(1).Column = 1 Then 
     With Application.FileDialog(msoFileDialogFolderPicker) 
      .InitialFileName = IIf(ActiveCell.Value = "", ActiveWorkbook.Path, ActiveCell.Value) 
      .Title = "Please choose a folder" 
      .AllowMultiSelect = False 
      If .Show = -1 Then Target.Value = .SelectedItems(1) 
     End With 
     Cancel = True '<< prevents going into edit mode 
    End If 

End Sub 
+0

が魅力のように働いた:)ありがとうございます! –

+0

もう1つの質問 - 列Aのセルを「ダブルクリック」したときにのみマクロの呼び出しを変更したいのですが? –

関連する問題