Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


850 / 886 ←次へ | 前へ→

【39】Re:リストボックス内を並べ替え
回答  らいでん  - 03/5/16(金) 16:15 -

引用なし
パスワード
   こんにちは。
ご提示のデータですと

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と同じような使い勝手のよさを期待されると辛いものが
あります。

>作業用のシートを適宜追加し
と仰っていますので、多分
リストボックスのデータを一旦表に書き出す→ソート処理→配列変数格納
→表の削除、または作業用文書の削除
といった一連の処理を考えておられるのでしたら、更なる工夫が必要に
なるでしょう。

この点
>他のサイトを検索したら配列変数にとりこんでからのソートで対応
こちらのアルゴリズムと天秤にかけて考える必要がありそうですね。

2,024 hits

【21】リストボックス内を並べ替え WhiteRabbit 03/4/24(木) 15:17 質問
【28】Re:リストボックス内を並べ替え らいでん 03/5/4(日) 1:42 発言
【31】Re:リストボックス内を並べ替え WhiteRabbit 03/5/13(火) 15:14 お礼
【33】Re:リストボックス内を並べ替え らいでん 03/5/14(水) 0:16 回答
【36】Re:リストボックス内を並べ替え WhiteRabbit 03/5/15(木) 15:27 質問
【39】Re:リストボックス内を並べ替え らいでん 03/5/16(金) 16:15 回答
【40】Re:リストボックス内を並べ替え WhiteRabbit 03/5/16(金) 21:18 お礼

850 / 886 ←次へ | 前へ→
ページ:  ┃  記事番号:
207137
(SS)C-BOARD v3.8 is Free