• ベストアンサー

リストボックス文字を連結しセルへ入力

cj_moverの回答

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.4

#1、2、3、cjです。 #3補足欄へのレスです。 5つの大項目のうち、  どの大項目を扱うべきなのか、  対象となる大項目の先頭行は(絶対位置で)何行めなのか、 という情報を、私はどうすれば知ることができますか? 対象となる大項目の先頭行より下、最初に見つかる空セル、 が出力ポイントになる、ということのようですが、何分、起点が解りません。 そちらでは解るということでしたらば、 ' ' ●(2/3択)●アクティブセルより下の行で、一番上にある空セル、に出力   Range("B" & ActiveCell.Row & ":B" & Rows.Count).SpecialCells(xlCellTypeBlanks).Areas(1)(1).Resize(, 2).Value = 氏名_項目() この記述の  ActiveCell.Row の部分を   対象となる大項目の先頭行の、(絶対位置での)行位置を   数値で  指定して貰えればいいんだと思います。 実際には変数を使うなり工夫する必要はあるでしょうけれど  対象となる大項目の先頭行の、(絶対位置での)行位置が  10、であるならば、   Range("B" & 10 & ":B" & Rows.Count).SpecialCells(xlCellTypeBlanks).Areas(1)(1).Resize(, 2).Value = 氏名_項目() という風に数値が当て嵌められるようにそちらで書き換えてみて下さい。 また、  対象となる大項目の先頭行以下の3行(のB列)には必ず値が設定してある   (対象となる大項目の先頭行の、(絶対位置での)行位置が    10、であるという例ならば、    B10:B12 の範囲は必ず値が設定してある、という意味)  ということならば、 上の記述をより簡単なものにして   Range("B" & 10).End(xlDown).Offset(1).Resize(, 2).Value = 氏名_項目() のように書けるのかも知れません。 もっとも、 対象となる大項目と次なる大項目、の間に必ず空行がある、 という、大前提、で成り立つものですから、 対象となる大項目配下に出力するつもりが、次なる大項目配下になってしまう場合もあります。 大前提が崩れないように注意してください。 現状で私からアドバイス出来るのは、これ位のものです。 先々のこともあるので、またちょっと気になったことを書いておきます。 例えば、(本件と類似した例という意味で)  2行めが項目タイトルで、 [番号]__[氏名]__[項目]  と、なっていて、  3行め以降データ 1__"大分類"__"hoge" 2__"小分類"__"piyo" 3__"氏名1"__"hogehoge" 4__(空)__(空) 5__"大分類"__"fuga" 6__"小分類"__"hogera" 7__"氏名2"__"fugapiyo" 8__"氏名3"__"piyopiyo" 9__(空)__(空) 10__(空)__(空)  のような様式の表なんでしょうかね? 樹形図を二次元的に表した表、を編集するのは扱いが非常に難しいです。 将来的にお奨めしておきたいこととして、 【リレーショナルデータベース】について、さわりだけでも 知っておくと、色々な可能性や汎用性、融通性、などが見えてくると思います。 現在のような様式で表示したり印刷したりする必要があるにしても、 それは専ら表示用「レポート」にして、 入力作業や編集は別に「テーブル」を用意してそちらで行う ようにシステムを作っておいた方が、すべての作業工程がシンプルになり 誰にも扱い易い、理解され易いものになると思います。 余談が過ぎたかも知れませんが、ご参考まで。

kuma0220
質問者

お礼

いろいろと親切丁寧に解答下さりありがとうございます。 おかげで思ったような処理が出来上がりました。 本当にありがとうございました。

関連するQ&A

  • リストボックス内検索

    マクロ初心者です。 (エクセル2003を使用) ユーザーフォームにテキストボックスとリストボックスを作り、 リストボックス内のデータ(2列;ナンバーと文字、2500行くらい)の検索をテキストボックスに入力した文字で行いたいのですが、どうしていいのかわかりません。 ワークシート上では、Find関数を使ってできるのですが、リストボックス内の検索では使えませんか? inStr関数を使うのでしょうか? 検索がされたときのスクロールもできるといいのですが…。 よろしくお願いいたします。

  • リストボックスについてです。

    リストボックスについてです。 B列をダブルクリックするとリストボックスが立ち上がり、データを選択してB列に表示できるように設定されていますが、困った現象が起こっています。 例えば、sheet1のB10にダブルクリックでリストボックスを表示し、そこから「あいうえお」という名前を表示させて、sheer1編集が終わったとします。 次のsheet2でB1をダブルクリックしているのに、sheet2のB10に勝手に「あいうえお」と表示されてしまいます。 コードは以下になってます。 VBA初心者なのでエクセルのサイト等からコピペ等して作ったコードです。 どこかおかしな箇所があると思うのですが、何処がおかしいのかがわかりません。 お分かりになる方、教えていただければ助かります。 ' ◆Worksheetのコード◆ '---------------------------------------------------- '選択範囲を変更したときに実行される Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) UserForm1.ListBox1.RowSource = "データ!A1:A100"  '表示するデータ範囲 UserForm1.ListBox1.Font.Size = 12    'フォントサイズ If Target.Column = 2 Then 'B列なら 行 = Target.Row '行番号を取得する UserForm1.Show 'ユーザーフォームを表示する End If End Sub '=================================================================================== ' ◆UserForm1のコード◆ '-------------------------------------------------------------------------- Private Sub ListBox1_Click() 'クリックされたときに実行される If 行 <> 1 Then '1行目でなければ Cells(行, 2) = ListBox1.Value 'リストボックスの値をセルにセットする End If UserForm1.Hide 'ユーザーフォームを非表示にする End Sub Private Sub UserForm_Deactivate() '非アクティブになったときに実行される Unload Me 'ユーザーフォームをメモリから削除する End Sub '========================================================================================= '============================== ' ◆標準モジュールのコード◆ Option Explicit Public 行 As Variant '行番号 Sub auto_open() Load UserForm1 'ユーザーフォームをメモリに読み込む End Sub '==============================

  • ExcelVBAでユーザーフォーム内のリストボックスの設定について

     教えてください、ExcelVBAでユーザーフォーム内にリストボックスを作りました。 複数列・複数行のワークシートデータを参照する設定です。  列は12列で、一番左の列に番号をふってあります。  行は31行で、一行目がタイトル表示してあります。  質問なのですが、このリストボックスは全列・全行表示する大きさでユーザーフォーム内に作成してあるのですが、いざマクロを動かすと幅は問題ないんですが、高さが縮んで自動的にスクロールが表示されます。  ユーザーフォームを大きくしてリストボックスも大きくしてやっても同じです。 このリストボックスの高さを固定させる設定はどうすれば良いでしょうか。

  • EXCELの入力規則でリスト入力をさせたいセルがあります。

    そのときのリスト項目ですが、例えばA列に北海道、青森、秋田・・・などの都道府県名が入っており、C列に○か空白が入力されている表があるとします。また行の数は47とします。 (○か空白の意味は、県庁所在地と都道府県名が同じ名前なら○(例に、新潟県と新潟市)、それ以外なら空白(三重県と津市)だとします) C列が"○"の場合のみA列のデーターをみて、それらをリスト項目と してダウンリストで選べるようにしたいのですが、どのようにしたらよろしいでしょうか? VBAのコードでなければできないようですか?教えてください。 よろしくお願いします。

  • エクセル VBAのリストボックス

    エクセルのVBAでユーザーフォーム上のリストボックスに文字を入力すると候補がドロップダウンリストに表示され、候補から一つを選択するとドロップダウンリストをとじるといったコードを教えてください。ただし、最終的にリストボックスの値はリストから選ぶのみで、文字を入力するのは候補を表示するためだけに使いたいのです。どなたか、ご教授願います。

  • エクセル・VBAでテキストボックスに入力された文字を

    エクセル・VBAでテキストボックスに入力された文字を B列から検索し、結果をユーザーフォームのリストbox に表示したいのですがうまくいきません 検索は部分一致・大文字小文字無視で行いたいです よろしくお願いします

  • リストボックスのスクロールバーをマウスで動かしたい

    エクセル2007です。 Sheet1のA列に 1行目から順に 1 2 3 4 5 6 7 8 9 10 といれました。 ユーザーフォームを新規作成し、リストボックスを設置しました。 VBAコードは、 Private Sub UserForm_Initialize() Me.ListBox1.RowSource = "Sheet1!a1:a10" End Sub にしました。 VBE画面でF5を押して、フォームを表示させるとリストボックスにスクロールバーが表示されますが、 フォームをクリックして、マウスホイールでぐりぐりしても、リストは動きません。 画像のように、4にカーソルをあて、グリグリしてもダメです。 どうしたら動くようになるのでしょうか?

  • リストボックス内の文字の配置

    Excel2003を使用しています。 ユーザーフォームのリストボックス内の文字の配置を右寄せにしたいのですが、そういう設定は可能でしょうか? 今のままだとマクロを実行してリストが表示されたときに、若干見にくいので、リスト内の配置が設定可能であれば、教えていただきたいです。 よろしくお願いします。

  • リスト外入力

    アクセス2002を使っています。 フォームでコンボボックスを使用し一覧から選択できるようにしたのですが、一覧にない文字列を入力しようとすると「一覧から選択して下さい」とメッセージが出て入力できません。 一覧にない文字列も入力できるようにしたいのですが、どなたか教えていただけませんか? フォームのプロパティで「リスト外入力」という項目がありますが、このプロシジャでマクロを設定すればできるのでしょうか? よろしくお願い致します。

  • excel リストボックスを使った入力について

    excelにリストボックスを使って、複数の入力を一括で行いたいと考えています。 添付画像のように、横並びに入力する方法、縦並びに入力する方法があるのですが、 番号順に入力を自動で行う手順を作成している段階で詰まっております。 考えとしては アクティブのセル(番号1)から、リストボックスを起動し、for nextを使って順に入力 リストボックスで一度入力されたものは、Selectedコマンドにてfalseとし、 次の入力(番号2)に進むようにする。 それぞれ、3、6の入力後、次の行(列)の1の同行(同列)に移動する。 この3、6の位置で行列が切り替わるようにプログラムを組む方法で詰まっております。 なお、入力するセルの個数につきましては、最低1個、最大で9個となり、変化します。 アドバイスいただければと思います。また、別法でも構いません。 よろしくお願いします。