アプリ版:「スタンプのみでお礼する」機能のリリースについて

 ListBox1からListBox2に追加した項目を、コマンドボタンを押すと、Sheet3のA1から下に並べていくようにしたいのですが、どうもうまくいきません。
リストボックスのプロパティにLinkedCellというのがあるらしいのですが、使っているバージョンには無いみたいです。
もう何日も頭をひねっているのですが、初心者なのでわかりやすく教えて頂けませんでしょうか?よろしくお願いします。

A 回答 (4件)

いまいち、質問の内容が、理解しづらいです。



なんらかの操作でListBox1からListBox2に項目を追加し、その「追加された項目”だけ”」をシート3に表示していきたいのでしょうか?????
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。すみません。初心者ゆえどのように説明したらよいかとても悩んだのですが・・・
そうです。AddItemを用いてあるリストボックスからもう一方のリストボックスに項目を追加しました。
その追加した項目だけをセルに移したいのです。
(つまりリストボックスの内容をセルからプロパティRowsauceによって設定する操作の逆の操作をしたいのです。)

お礼日時:2006/05/05 23:22

思い違いはあるかと思いますが、こんなのではどうでしょう?


ユーザーフォームにリストボックスを2つ、ボタンを1つ貼り付け、ボタンを押すとリスト1で選択された値がリスト2にAddItemされ、かつ、リスト2の内容がシート3のA列に出力するようにしてみました。

----------------------------------------------
Option Explicit

'フォームイニシャライズ
Private Sub UserForm_Initialize()
'リスト1のRowSourceをシート1のA1からA4に設定
Me.ListBox1.RowSource = "Sheet1!A1:A4"
End Sub

'ボタン押下時
Private Sub CommandButton1_Click()
Dim i As Integer
'リスト1で選択された項目をリスト2へAddItem
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Me.ListBox2.AddItem .List(i)
End If
Next i
End With
'シート3のA列へ転記するプロシージャを実行
Call Disp
End Sub

'シート3にリスト2の値を出力するサブプロシージャ
Private Sub Disp()
Dim i As Integer
Dim row As Integer

'一旦A1を含むエリアをクリア
Sheet3.Range("A1").CurrentRegion.Clear
'リスト2の値を出力
row = 1
For i = 0 To Me.ListBox2.ListCount - 1
Sheet3.Range("A" & row).Value = Me.ListBox2.List(i)
row = row + 1
Next i
End Sub
----------------------------------------------
    • good
    • 1
この回答へのお礼

教えて頂き本当にありがとうございます。
とても詳しくて、いままで苦心して考えていたことがやっと出来ました。
すこし応用して使わせて頂きました。本当にありがとうございます。

お礼日時:2006/05/06 20:04

Sheet1に1つリストボックスを貼り付ける。


H1:H6に(どこでも良い。またはVBAでAddItemのプログラムで設定しても良い)
東京
横浜
静岡
名古屋
大垣
京都
と入力しておく。
リストボックスの「プロパティ」を出して、ListFillRangeにH1:H6と入れる。
そのリストボックスを「エディット」モードでダブルクリックしてでてくる
Private Sub ListBox1_Click()

End Sub

Private Sub ListBox1_Click()
ActiveCell = ListBox1.Text
ActiveCell.Offset(1, 0).Select
End Sub
とする。
これでエディットモードを脱して、値を最初にセットしたいセルをクリクして、順次リストボックスをクリックしていくと、順次
A1横浜
A2静岡
A3名古屋
A4静岡
A5横浜
のように値がセットされていきます。
質問はこういうことではないですか。
>ListBox1からListBox2に追加した項目
は敢えて今回の質問では不要部分と独断しました。
>コマンドボタンを押すと、
これも意味不明で、独断で無視しました(それだけ質問の表現がわかりづらいということ)。
>リストボックスのプロパティにLinkedCellというのがあるらしいのですが
相当古くから(97ではもちろんあったと思う)あり、刻と違う
・LinkedCellは1箇所のセルとつながってしまうので
・具体的にセル番地を書く以外コード・ルーチンは指定できないので
使得ない場合があります。
    • good
    • 0
この回答へのお礼

どう説明すればよいか本当に困っていました。分かりにくい説明ながら、アドバイス頂き勉強になりました。本当にありがとうございます。

お礼日時:2006/05/06 20:07

#3です。

2段リストボックスなら(初めからそうでないかと思ったが、よく入力規則の2段式が質問にでる)
シートに2つリストボックスを貼り付ける。
H1:H5に(どこでも良い。またはVBAでAddItemのプログラムで設定しても良い)I列以下に下記を入力しておく。
H列  I列 J列 ・・・・・
東京千代田区港区新宿区品川区
横浜鶴見区神奈川区西区中区
静岡葵区駿河区清水区
名古屋千種区東区北区
京都右京区左京区南区
ListBOX1のリストボックスの「プロパティ」を出して、ListFillRangeにH1:H5と入れる。
KistBox1のクリックイベントに
Private Sub ListBox1_Click()
r = ListBox1.ListIndex + 1
c = Cells(r, 8).End(xlToRight).Column
ListBox2.Clear
For i = 9 To c
ListBox2.AddItem Cells(r, i)
Next i
End Sub
とする。
ListBox2のクリックイベントには
Private Sub ListBox2_Click()
ActiveCell = ListBox2.Text
ActiveCell.Offset(1, 0).Select
End Sub
(#3のコードとほぼ同じ)
これで例えば、
ListBox1で静岡を選ぶと、その区名がListBox2にセットできますので、そこで区名をクリックすれば、セルに区名がセットされます。
VB的でなく、エクセル的な回答です。
    • good
    • 1
この回答へのお礼

エクセル的な回答だったのですか。とても参考になります。ありがとうございました。

お礼日時:2006/05/15 21:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!