2016-08-23 4 views
2

ボタンをクリックするとテキストファイルが読み込まれ、テキストファイルの行が列に読み込まれます。私は、行に含まれるものに応じて、特定の行に隣接するセルにチェックボックスを追加する必要があります。Visual Basic Excel作成コードのチェックボックス

チェックボックスのようなコンポーネントをコードに作成することはできますか?

ご回答いただければ幸いです。

+1

これはあなたが必要としていると思いますhttp://analysistabs.com/vba/add-checkbox-on-worksheet-or-userform-using-vba/ – Siva

答えて

1

@Sivaが提供するリンクは確かに有効ですが、私は外部リンクの代わりにStackOverflowで回答する方が好きです。したがって、ここであなたが探しているかもしれない解決策は以下のとおりです。

Option Explicit 

Public Sub tmpSO() 

Dim i As Long 
Dim chk As CheckBox 

With ThisWorkbook.Worksheets(1) 
    .CheckBoxes.Delete 
    For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row 
     If .Cells(i, "A").Value2 = "need checkbox" Then 
      Set chk = .CheckBoxes.Add(Left:=.Cells(i, "B").Left, Top:=.Cells(i, "B").Top, Width:=.Cells(i, "B").Width, Height:=10) 
      chk.OnAction = "runThisSub" 
      chk.Name = "CheckBowInRow" & i 
      chk.Caption = "CheckBowInRow" & i 
     End If 
    Next i 
End With 

End Sub 

Sub runThisSub() 

MsgBox "You clicked the checkbox " & Application.Caller _ 
      & Chr(10) & "in cell " & ThisWorkbook.Worksheets(1).CheckBoxes(Application.Caller).TopLeftCell.Address 

End Sub 

コピーの両方潜水艦はModuleに第一副

  1. シートでExcelファイルと変更にテキストは(ここではWorksheet(1)です)、
  2. にインポートされます。条件が見つかる欄(ここでは列A)、さらに
  3. 条件は何ですか(ここでは列Aの値はneed checkboxでなければなりません)。

コードがシートWorksheet(1)に列A内のすべてのセルに目を通すと、値がneed checkboxであるかどうかをチェックします。その場合、コードはそのセルに隣接する列Bに自動的にチェックボックスを追加します。

新しく作成されたチェックボックスのいずれかをクリックすると、2番目のサブが起動し、メッセージボックスにどの行がクリックされたかを示すチェックボックスが表示されます。

+0

これは絶対に素晴らしいです、ありがとうございます! 「Option Explicit」が何をしているのか聞いてもよろしいですか? –

+0

'Option Explicit'はコーディング**ベストプラクティス**とみなされます。詳細については、http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/3554/always-use-option-explicit#t=20160823142124572616を参照してください。また、Microsoftのこれについて考える)https://msdn.microsoft.com/en-us/library/y9341s4f.aspx – Ralph