- ベストアンサー
Listプロパティについてコードの意味を解説してもらえませんでしょうか?
- Listプロパティについてコードの意味について解説していただきたいです。
- Listプロパティのコードの意味を解説していただけますか?
- Listプロパティのコードの意味をわかりやすく解説してもらえませんか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
回答が付いてないようなので。。。 >ListIndex8までを転記していることはわかりました。 勘違いではありませんか。 正しくは、「Listboxで選択した行の8列を転記している」です。 >MyBuf(i, 0) = .List(N, i * 9 + j + 8) MyBuf(列,行) List(行,列) ということです。 上記で、ListとMyBufでは行列が入れ替わっていますが、これは >Range(MyCol(j) & "21:" & MyCol(j) & "42").Value = MyBuf このように配列を一度でセル範囲に入れるためです。 MyBuf(行,列)ではできません。 それから、i * 9 + j + 8 のような計算は一見ではその変化が分かりずらいので 結果をシートに表示してみればいいでしょう。 新しいブックで以下をお試しあれ。(データは不要) '-------------------------------------------------- Sub test() Dim i As Integer, j As Integer, N As Integer, MyBuf(21, 0), MyCol MyCol = Array("B", "F", "K", "L", "Z", "AB", "AD", "AH", "AK", "AM", "AS") For j = 0 To 8 If j <> 7 Then For i = 0 To 21 MyBuf(i, 0) = i * 9 + j + 8 Next Range(MyCol(j) & 17).Value = " j = " & j Range(MyCol(j) & 18).Value = MyCol(j) Range(MyCol(j) & 19).Value = Range(MyCol(j) & "21:" & MyCol(j) & "42").Address(0, 0) Range(MyCol(j) & "21:" & MyCol(j) & "42").Value = MyBuf End If Next Range("A17").Value = "Jの値" Range("A18").Value = "Arrayの値" Range("A19").Value = "取得範囲" Range("A21").Value = "ListBoxの列" Range("A21").EntireColumn.AutoFit For i = 0 To 21 Cells(i + 21, "A").Value = " i = " & i Next i End Sub '--------------------------------------------- それにしても、なぜ255列ものListBoxを作成しているのでしょうか。 255列もあれば一度では全ての列を見ることができないし、スクロールも厄介。 ふつう、ListBoxにはキーとなるアイテムと最小限必要なアイテムだけ表示するものです。 以上。
補足
ご回答ありがとうございます。 sheet書類に作業確認表を作成しています。(縦書き) その項目を保存するために別シートに転記しています。 自分なりに確認をしてどういう動きをしているのかは把握できました。 9列から11列毎に作業の項目を転記しているため、21項目で列の限界に 達します。 ただし、数が多いので、この方法が良いとわかりました。 リストボックスの表示項目は最初の数列を見るだけなんです。 しかし、ダブルクリックで転記させているのでこの様になって いるのだと解釈しました。 それにしても、動作が速いのには驚きました。 わかりやすい解説ありがとうございました。