|
▼らいでん さん:
こんばんは。返信ありがとうございます。
>こんにちは。
>ご提示のデータですと
>
>Sub TempTable()
> Dim TmpTb As Table
> Dim myArray() As Variant
> Dim lngCol As Long
> Dim strCell As String
> Dim i As Long
>
> Set TmpTb = ThisDocument.Tables(1)
> 'ソート処理
> '見出しは対象外,2列目,JISコードを基準,昇順
> TmpTb.Sort ExcludeHeader:=False, FieldNumber:="列 2", SortFieldType:= _
> wdSortFieldJapanJIS, SortOrder:=wdSortOrderAscending
>
> lngCol = TmpTb.Rows.Count - 1
> ReDim myArray(lngCol, 1)
>
> For i = 0 To lngCol
> '一列目のデータを配列に格納
> strCell = TmpTb.Cell(i + 1, 1).Range.Text
> myArray(i, 0) = Left(strCell, Len(strCell) - 2)
> '二列目のデータを配列に格納
> strCell = TmpTb.Cell(i + 1, 2).Range.Text
> myArray(i, 1) = Left(strCell, Len(strCell) - 2)
> Next
>
> With UserForm1.ListBox1
> .ColumnCount = 2
> .List = myArray
> .ListIndex = 0
> .ColumnWidths = "20;40"
> End With
> UserForm1.Show
>
> Set TmpTb = Nothing
>End Sub
>
>こういったところでしょうか。
サンプルコードありがとうございます。うまく作動しました。
>Excelですとご存知の通りUsedRangeそのものが配列として取り扱えますが
>Wordの表(セル)では、改行情報やセル区切りといったWord固有の情報が
>存在しますのでこの情報を切り捨てるという処理が必要になります。
>ですのでExcelと同じような使い勝手のよさを期待されると辛いものが
>あります。
ExcelVBA自体もよくわかってませんがWordの方もなかなか難しいのですね。
>>作業用のシートを適宜追加し
>と仰っていますので、多分
>リストボックスのデータを一旦表に書き出す→ソート処理→配列変数格納
>→表の削除、または作業用文書の削除
>といった一連の処理を考えておられるのでしたら、更なる工夫が必要に
>なるでしょう。
まさにそんなところですね。ちょっと勿体ない感じはしますが、ありものでできるのは捨てがたいですね。
>この点
>>他のサイトを検索したら配列変数にとりこんでからのソートで対応
>こちらのアルゴリズムと天秤にかけて考える必要がありそうですね。
いろいろと教えていただき勉強になります。
また質問すると思いますが今後もよろしくお願いします。
|
|