【VBA】리스트 박스에 값 추가하기 & 선택한 값을 클립보드에 복사
먼저 목록 상자에 값 추가
콤보 박스 때와 거의 같네요. 콤보 상자 목록에 값 추가
양식에 적합한 목록 상자와 버튼을 만듭니다.
목록 상자의
MultiSelect
속성2-fmMultiSelectExtended
(복수 선택 가능)로 설정합니다.이번에는 이 데이터를 추가했습니다.
(사람의 이름으로 할까라고 생각했지만 뭔가 배고프고 빵의 이름이 되어 버렸다… )
Private Sub UserForm_Initialize()
lstName.Clear 'リストボックス内初期化
Dim NameCol As Long
NameCol = WorksheetFunction.Match("名前", Master.Rows(1), 0) '名前列数格納
Dim LastRow As Long
LastRow = Master.Cells(Rows.Count, NameCol).End(xlUp).Row '名前列最終行格納
Dim i As Long
For i = 2 To LastRow 'リストボックスに名前をすべて格納
lstName.AddItem Master.Cells(i, NameCol)
Next i
End Sub
선택한 값을 클립보드에 복사
선택한 값을 변수에 저장
목록 상자의 값이 선택되면 변수에 저장하고 줄 바꿈을 넣습니다.
클립보드에 복사
이전에는 Win7(Office2010)을 일로 사용했을 때
New DataObject
를 사용한 기억이 있습니다.이번에 시도하려고하면 잘 작동하지 않았습니다.
조사하면
テキストボックス
를 사용한 쓰기가 나오고,그것을 사용해 보니 제대로 작동했습니다.
「텍스트 박스를 폼에 만드는 것은?」라고 생각했습니다만
메모리에 작성된 텍스트 상자에 문장을 넣고 그것을 복사하는 것 같습니다!
Private Sub btnCopy_Click()
'選択した項目をクリップボードにコピー
Dim i As Long
Dim ListDate As String 'リストボックスで選択した値を格納する変数
For i = 0 To lstName.ListCount - 1 'リストボックスで選択した値を改行しながら変数に格納
If (lstName.Selected(i)) Then
ListDate = ListDate & lstName.List(i) & vbCrLf
End If
Next i
'メモリ上のテキストボックスにListDateを格納する
With CreateObject("Forms.TextBox.1")
.MultiLine = True 'テキストボックスの複数行入力を許可
.Text = ListDate '変数をテキストに格納
.SelStart = 0 'テキストの0文字目以降
.SelLength = .TextLength 'テキストすべてを
.Copy 'クリップボードにコピーする
End With
End Sub
【실행 결과】
목록 상자에 값이 포함되어 선택할 수 있습니다.
복사 버튼을 누르면 클립보드에 복사됩니다.
셀이나 메모장 등에 붙여졌습니다.
와타시 흐름 조건
목록 상자를 여러 개 선택할 수 있도록 설정하면
MultiSelect
속성은 항상ctrl에서 다중 선택 가능
2-fmMultiSelectExtended
입니다.1-fmMultiSelectMulti
여러 선택 가능하지만 선택 취소 할 때 선택한 항목을 다시 선택해야합니다.1-fmMultiSelectMulti
사용하는 것은 언제입니까? 이런 때 사용하면 좋겠다는 것이 있으면 알려주세요
그건 그렇고, 나는 빵보다 쌀을 좋아합니다
Reference
이 문제에 관하여(【VBA】리스트 박스에 값 추가하기 & 선택한 값을 클립보드에 복사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KaoTechBlog/items/e9543759fabb91706b9f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)