Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


17073 / 76738 ←次へ | 前へ→

【65124】リストボックスでの履歴表示について
質問  のだめ  - 10/4/17(土) 23:21 -

引用なし
パスワード
   はじめまして。
最近VBAをはじめたのですがあるところで詰まりました。
どなたかご教授ください。。

リストボックスが二つあります。rirekiとSBとします。
rirekiにはSBで選択されたものが重複を許さず追加されていき、
重複が起きた場合は一旦削除して一番上に再び追加します。
また、rireki自身も選択可能で選択すると必然と重複が起きますので
一旦消して一番上に再び追加してます。
この両方の操作でsheet1のあるセルに選択したvalueを入れています。

rowsourceとしてsheet2のある列をそれぞれ使っています。
以下はコードなのですが詰まっているところは
rireki自身を選択したときにセルにうまく選択したものが入らず
ずれが生じ、また、2重に内容もrirekiに登録されてしまします。

よろしくお願いします。

以下useform1に記述
Private Sub rireki_Click()
  Dim i As Long, flag As Boolean
  If 行 >= 5 Then
    Cells(行, 10) = rireki.Value
  End If
  i = 10
  For i = 1 To 10
  If rireki.Value = Worksheets("sheet2").Cells(i + 2, 12).Value Then
    flag = True
    Exit For
  End If
  Next i
  Do While i > 1
    Worksheets("sheet2").Cells(i + 2, 12).Value = Worksheets("sheet2").Cells(i + 1, 12).Value
    i = i - 1
  Loop
  Worksheets("sheet2").Cells(3, 12).Value = rireki.Value
  UserForm1.Hide
End Sub

Private Sub SB_Click()
  Dim i As Long, flag As Boolean
  If 行 >= 5 Then
    Cells(行, 10) = SB.Value
  End If
  i = 10
  For i = 1 To 10
  If SB.Value = Worksheets("sheet2").Cells(i + 2, 12).Value Then
    flag = True
    Exit For
  End If
  Next i
  If flag Then
    Do While i > 1
      Worksheets("sheet2").Cells(i + 2, 12).Value = Worksheets("sheet2").Cells(i + 1, 12).Value
      i = i - 1
    Loop
    Worksheets("sheet2").Cells(3, 12).Value = SB.Value
  End If
  If Not flag Then
    i = 10
    Do While i > 1
      Worksheets("sheet2").Cells(i + 2, 12).Value = Worksheets("sheet2").Cells(i + 1, 12).Value
      i = i - 1
    Loop
    Worksheets("sheet2").Cells(3, 12).Value = SB.Value
  End If
  UserForm1.Hide
End Sub

Private Sub userform_deactive()
  Unload Me
End Sub

以下worksheetに記述
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column = 10 And Target.Row >= 5 Then
    Cancel = True
    行 = Target.Row
    列 = Target.Column
    UserForm1.rireki.RowSource = ""
    UserForm1.rireki.RowSource = "sheet2!l3:l12"
    
    UserForm1.SB.RowSource = ""
    UserForm1.SB.RowSource = "sheet2!j3:j50"
    UserForm1.SG.RowSource = ""
    UserForm1.SG.RowSource = "sheet2!k3:k50"
    
    UserForm1.Show
  End If
End Sub

以下module1
Option Explicit
Public 行 As Variant
Public 列 As Variant
Sub auto_open()
  Load UserForm1
End Sub
0 hits

【65124】リストボックスでの履歴表示について のだめ 10/4/17(土) 23:21 質問
【65126】Re:リストボックスでの履歴表示について kanabun 10/4/18(日) 9:54 発言
【65134】Re:リストボックスでの履歴表示について kanabun 10/4/18(日) 15:03 発言
【65142】Re:リストボックスでの履歴表示について のだめ 10/4/18(日) 23:08 発言
【65143】Re:リストボックスでの履歴表示について kanabun 10/4/19(月) 1:56 発言
【65150】Re:リストボックスでの履歴表示について のだめ 10/4/19(月) 21:24 お礼

17073 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free