【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 사용하는 것은 언제입니까?
이런 때 사용하면 좋겠다는 것이 있으면 알려주세요

그건 그렇고, 나는 빵보다 쌀을 좋아합니다

좋은 웹페이지 즐겨찾기