範囲と追加アイテムをリストするvba
VBAを使用して、(構造化参照を持つ)tableから値のリストを定義します.
以下は、シート「Register」のtable「Register_Table」の7番目の列からリストを取得するために使用されるコード行です:
List5=Sheets( "Register").ListObjects( "Register_Table").ListColumns(7).DataBodyRange.Value
これは完全に機能します.
ここで、このリストと上部に追加の値を提供するコードが必要です.たとえば、列7に次のアイテムがある場合:
アイテム1
アイテム2
アイテム3
その他
新しいリストに最初のリストに「すべて」のアイテムを追加して、リストを次のようにします.
すべて
アイテム1
アイテム2
アイテム3
その他
「ALL」はコードで定義することも、別のセルで定義することもできます(私の設定はコードにあります)が、リストに含めることはできません.
私はそれが簡単なものであると確信していますが、私にとっては十分に簡単ではなく、誰かが以前にこれに答えた場所を見つけることができません.
ありがとう
返信リスト(回答:9)
To:pom15595
re:リストをごまかす
これが私のリクエストの解釈です.
'
Sub AlterData()
Dim List5 As Variant
Dim N As Long
List5=Range( "G3:G6").Value
'<<<この範囲のデータを入力
List5=Application.WorksheetFunction.Transpose(List5)
ReDim Preserve List5(LBound(List5)To(UBound(List5)+ 1))
For N=UBound (List5)To(LBound(List5)+ 1)ステップ-1
List5(N)= List5(N-1)
Next
List5(1)= "All"
VBA.MsgBox List5(1)&vbCr&List5(2)&vbCr&List5(3)&vbCr&List5(4)&vbCr&List5(5)
End Sub
'
[編集]
次の行の直後のコード:List5(1)= "All"の方がいいかもしれません...
List5=Application.WorksheetFunction.Transpose(List5)
Range( "H3:H7").Value=List5
End Sub
Custom_Functionsアドインには、X_vLookUp関数を含む20以上の新しいExcel関数があります. ダウンロード(広告なし)...https://www.mediafire.com/folder/lto3hbhyq0hcf/Documents
---
応答1# ->にスキップ2 #pom1559WOWそれは私が期待していたよりも多くのコードです.これが私の貧しい質問によるものであるかどうかわかりません.ここでより良い文脈を与えるためには、完全なコードがあります:
-プライベートサブワークシート-SelectionChange(範囲としてのByValターゲット)
を終了した場合、
application.enablevents= false on Error goto exithAndler
target.column= 17= 17<>target.row<11
'list5= sheets( "register").listColumns(7).databodyrange.value
gcellcurrval6= target.value
userform6.show' popフォームを上げる
exithandler:
Application.EnableVents= true
end sub
-コードが何をするのか、17列目(上部10行を除く)をクリックすると、List5によって入力されるユーザーフォームが開きます.
これは大丈夫です、私の質問は、このアイテムが参照tableに含まれていないとき( "all"の例で)リスト内の別の項目を追加する方法です( "register_table")
その文脈は役立ちますか?
応答2# ->にスキップ3 #Nothingto:pom15595
re: "そのコンテキストヘルプ"はい、それは助けます.
リストに列ヘッダーを置きたい( "all")
リストボックスのRowSourceを指定して、
画像では、columnHeadsプロパティがtrueで、rowsourceが行います. ヘッダーを含みます.Excel columnheadsプロパティがtrueの場合、ローソースの上の行を自動的に含みます.
だからあなたがすることは、ヘッダーテキストをセルに追加し、それ以外のセルをあなたのリストで埋めることです...
userform1.listbox1.RowSource=このワークブック.ワークシート(1).Range( "B3:B6")
もちろん、リストのサイズを知る必要があります.
このアプローチは速くて物事が私にとってより簡単になっています.
Professional_Compareワークブックを提供していますこのメソッドを使用しています.
応答3# ->にスキップ4 #pom1559私の場合私はリストボックスを使って値を選択するには該当する値:
QUSTERS/例では、「all」はこのリストのソースに入っていませんが、選択するオプションとして提供します.このリストのソースにすべてを含める必要がありません.
私はあなたが指示された列ヘッダーを使ってオプションとして選択することを許可しないと思われます.
これは私の状況を完全に説明しますか?そしてそれは可能ですか?
応答4# ->にスキップ5 #Nothing 1宛先:pom15595
re:まだそこにはありませんが、フィニッシュラインは表示されます.
リストの一番下にある「All」ラベルで問題がなければ、数行のコードを削除できます.
'
List5=Sheets( "Register").ListObjects( "Register_Table").ListColumns(7).DataBodyRange.Value
List5=Application.WorksheetFunction.Transpose(List5)
ReDim Preserve List5(LBound( List5)To(UBound(List5)+ 1))
List5(UBound(List5))= "All"
List5=Application.WorksheetFunction.Transpose(List5)
'
「すべて」が一番上に来る必要がある場合は、元のコードに戻ります.
-または-
リストボックスに個別のエントリを1つずつ書き込むことができます.
(遅いようですが、実際はそうではありません)-または-
7列目の上部または下部に空白セルまたはフィラーセルを作成する場合
「すべて」の値を入力するだけです.
√
応答5# ->にスキップ6 #pom1559すばらしいこと.上部に「すべて」が欲しかったので、元のコードに行きました.
結局のところ、必要なコードは最初に想像したよりも複雑でした.
これについてご協力いただきありがとうございます.
乾杯
応答5# ->にスキップ7 #pom1559申し訳ありませんが、私はあなたが元の質問によって答えたことを知っています(それについてもありがとう)、しかし.....
今すぐ私は2つの範囲からのリスト(リストボックスに表示されている)を必要とします.どうやってこれを行うことができますか?私はUnion etcで(しかし失敗した)を試みました.
あなたは私を操縦することができますか?
感謝
応答7# ->にスキップ8 #Nothingこんにちはpom15505
re:リストボックスに2つのリストを追加します
自分のコードの問題の1つにぶつかったので、新しい質問を投稿する必要があります.一人ではない.この問題に対する私の最初の反応は、リストボックスの.AddItemメソッドを使用することです.
Excelヘルプのパスを確認して、詳細を確認してください.
NLtL
関連質問
- 複数のテーブルに散布ヘッダーを結ぶ
- VBA/VB.NETで複雑な文字列を作成する方法
- Excel 365
- Excelの "固定オブジェクトが移動する"エラーが表示されます(ただし、オブジェクトが見つかりません).
- Excel-データビジュアライザテーブルをVisioにインポートします
- 企業のExcelモデルへの既存の従業員へのアクセスを制限します
- VBA-Excel-DialogSheets.Show 2021-廃止予定?
- 評価日2式2の式2
- 範囲としてのVBA-BYVALターゲット原因コピーと貼り付け問題
- 2セルをマージするマクロを作成し、合計を取得するためにマージセルをグループ化します.