Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
ユーザーフォーム・オプションボタン反映について
投稿日時: 21/04/16 18:34:39
投稿者: Lunascape

 お世話になっております。 初めてVBAを利用してユーザーフォームを作成している最中です。
ユーザーフォームの概要としまして住所データから氏名、住所で検索し、リストボックスに検索結果を表示し、アンケート結果などをオプションボタンで追加、修正したいと考えています。
 
 その際にリストボックスで選択した行の8番目の場所にオプションボタンの結果を反映したいですが上手くいきません。
 1にチェックが入れば○2にチェックが入れば-と検索されたデータの行の8番目に転記されるような動きを目指しています。
 

Private Sub cmd修正_Click()
    Dim ID As Long
    ID = リスト1.ListIndex
  
        If OptionButton1 = True Then
        Worksheets("データ").Cells(ID, 8).Value = ○
        ElseIf OptionButton2 = True Then
        Worksheets("データ").Cells(ID, 8).Value = -
        End If         
End Sub

 
ご教授お願いします。

回答
投稿日時: 21/04/16 18:48:58
投稿者: WinArrow
投稿者のウェブサイトに移動

質問
 
(1)リストボックスとセル範囲の関係は?
  RowSourceプロパティはどのようになっていますか?
 
 
(2)ここに記述したプロシジャは、どのようなタイミングで実行するのですか?

回答
投稿日時: 21/04/16 18:53:34
投稿者: WinArrow
投稿者のウェブサイトに移動

アドバイス
  
セルに文字列を代入する場合は、「"」で囲むことが必須条件です。
>Worksheets("データ").Cells(ID, 8).Value = ○

Worksheets("データ").Cells(ID, 8).Value = "○"

回答
投稿日時: 21/04/16 19:05:58
投稿者: WinArrow
投稿者のウェブサイトに移動

ヒント1
 
ListIndexは、0から始まります。セルの0行は存在しないから、+1すること。
リストボックスのRowSourceに設定したセル範囲を利用すること。
 
With Range(Me.Listbox1.RowSource)
    .Cells(ID + 1, 8).Value = "○"
End With

投稿日時: 21/04/16 19:21:26
投稿者: Lunascape

 お返事ありがとうございます。
””で囲うこと、また+1にすることで解決しました!
ご回答ありがとうございました。