[[20200327100600]] 『Activeコントロールのリストボックスの使い方』(ゴールデンレトリーバー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Activeコントロールのリストボックスの使い方』(ゴールデンレトリーバー)

教えてほしいのですが
リストボックスの使い方として、プロパティから LinkedCellと
ListFillRangeを設定し、使えるようにはなりましたが、
LinkeCellを固定せず、選択したセルにリストから選んだ項目を入力
できるようにしたいのですが、仕方がわかりません。
教えていただけますでしょうか。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 マクロを使います
 シートモジュールに

 Private Sub ListBox1_Click()
    ActiveCell.Value = Me.ListBox1.Value
 End Sub

(ピンク) 2020/03/27(金) 10:27


お返事頂きありがとうございました。
教えて頂いた通りにするとできました。

(ゴールデンレトリーバー) 2020/03/27(金) 10:33


もう1つ質問ですが
リストボックスをシート内で自由に動かすにはどうすればいいでしょうか
後、できればボタンを押せばリストが出現するようにできれば最高です。
(ゴールデンレトリーバー) 2020/03/27(金) 10:40

 リストボックスの代りに

 データの入力規則のリストから入力するのは如何
(ピンク) 2020/03/27(金) 10:44

 ダブルクリックしたセルの位置にリストボックスが移動します。
 シートモジュールに

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Me.ListBox1.Left = Target.Left
    Me.ListBox1.Top = Target.Top
    Cancel = True
 End Sub

(ピンク) 2020/03/27(金) 10:54


 リストボックスをダブルクリックでリストボックスが消えます。
 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.ListBox1.Visible = False
 End Sub

 セルをダブルクリックでセル位置にリストボックスが出現します。
 (先に挙げたBeforeDoubleClickと差替えてください。)
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Me.ListBox1.Visible = True
    Me.ListBox1.Left = Target.Left
    Me.ListBox1.Top = Target.Top
    Cancel = True
 End Sub

(ピンク) 2020/03/27(金) 11:01


 ダブルクリックでリストボックスを消すのはダブルクリック時に
 新たな文字が転記され問題がありますので取りやめましょう
 代りにリストの最後に END の文字を追加してください。
 END が選択されるとリストホックスを非表示にします。

 ListBox1_Click を以下に訂正してください。

 Private Sub ListBox1_Click()
    If Me.ListBox1.Value = "END" Then
        Me.ListBox1.Visible = False
    Else
        ActiveCell.Value = Me.ListBox1.Value
    End If
 End Sub

(ピンク) 2020/03/27(金) 11:12


 BeforeDoubleClickを一部修正して使い勝手を向上しました。

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Me.ListBox1.Visible = True
    Me.ListBox1.Left = Target.Offset(, 1).Left
    Me.ListBox1.Top = Target.Top
    Cancel = True
 End Sub

(ピンク) 2020/03/27(金) 11:17


色々とお気遣い頂きありがとうございました。
おかげさまで良い物が出来ました。
ありがとうございました。
(ゴールデンレトリーバー) 2020/03/27(金) 12:42

リストの中から選んだ文字を同じ列に入力しようとすると入力できませn。
何故でしょうか?
教えて頂いた通りの何度かしてみたのですが、どうしても入力できません。
どうすればいいでしょうか?
(ゴールデンレトリーバー) 2020/03/30(月) 08:56

 他の入力方法を検討してみます。

 ListFillRange のアドレスを教えてください。

(ピンク) 2020/03/30(月) 09:42


 リスト入力する範囲も知らせてください。
(ピンク) 2020/03/30(月) 09:49

sheet2!A1:A30です。
よろしくお願いします。
(ゴールデンレトリーバー) 2020/03/30(月) 10:41

 右クリックメニューにリストを表示します。
 <シートモジュール>
 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim CMD_BARS As CommandBarControl
    Dim c As Range

    '全てのメニューを一旦削除
    For Each CMD_BARS In Application.CommandBars("Cell").Controls
        CMD_BARS.Visible = False
    Next
    For Each c In Sheets("Sheet2").Range("A1:A20")
        '以下で、新規のメニューを追加
        Set CMD_BARS = Application.CommandBars("Cell").Controls.Add()
        With CMD_BARS
            .Caption = c.Value
            .OnAction = "'InputItem """ & c.Value & """'"
        End With
    Next
    Application.CommandBars("Cell").ShowPopup
    Cancel = True
    Application.CommandBars("Cell").Reset
 End Sub

 <標準モジュール>
 Sub InputItem(a As String)
    ActiveCell.Value = a
 End Sub

(ピンク) 2020/03/30(月) 10:51


 >sheet2!A1:A30です。 

 訂正
 For Each c In Sheets("Sheet2").Range("A1:A30")

(ピンク) 2020/03/30(月) 10:53


色々とありがとうございます。
同じ列での入力が可能となったのですが、すぐ右のセルに同じ文字を入れようとすると入りません。

  A  B  C  D
1 赤 赤  黄


上の図のように入れようとするとB1の赤が入力できません。 ですが一旦C1の黄を先に入力してから
B1を選択し赤を入力すると入ります。これは何故でしょうか?
作りたい表では結構な頻度で同じ文字を入力する事が多いので続けて入力できる方が助かります。
何ども申し訳ございませんが、何とかなるでしょうか?

(ゴールデンレトリーバー) 2020/03/30(月) 11:48


 >すぐ右のセルに同じ文字を入れようとすると入りません。 

 こちらでは↑の症状は確認できません

 何か入力規則等の制限、若しくはWorksheet_Changeなどで制限を掛けられているのでは?

(ピンク) 2020/03/30(月) 11:54


入力規則の制限はかかっていないように思います。
Worksheet_Changeなどで制限があまり詳しくないので
教えて頂ければ幸いです。
(ゴールデンレトリーバー) 2020/03/30(月) 15:59

 新規シートで行っても同じ結果になりますか?

(ピンク) 2020/03/30(月) 16:02


そう思って別のパソコンでも試してみたのですが結果は同じでした
おっしゃられるように何かの設定がされているのでしょうか?
(ゴールデンレトリーバー) 2020/03/30(月) 16:14

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.