* calc 空白のセルだけの選択 [#kca250a0]
 |RIGHT:|LEFT:|c
 |~ページ|[[OpenOffice.org FAQの登録ページ]]|
 |~投稿者|CAN|
 |~分類|#listbox3(Q&A,faq03,class)|
 |~優先順位|#listbox3(緊急,faq03,priority)|
 |~状態|#listbox3(完了回答待ち,faq03,state)|
 |~カテゴリー|#listbox3(Calc 表計算,faq03,category)|
 |~投稿日|2010-05-20 00:33:24 (木)|
 |~OS|XP|
 |~依存するページ||
 |~バージョン|#listbox3(3.3.1,faq03,version)|
 
 ** メッセージ [#u6947237]
 |LEFT:|c
 |回答ページでは行末に「~」を付加する必要はありません|
 タイトルの通りの質問です。
 
 エクセルではctr+Gで空白のセルだけを選択することが
 できましたが、calcで同様の処理をすることができますでしょうか?
 
 よろしくお願い致します。
 
 ----
 ***過去の関連質問 [#wd5f117e]
 >M.Kamataki (2010-05-20 01:00:41 (木))~
 ~
 空白セルを選択し、どのような処理をされたいのか不明ですので、外しているかもしれませんが、faq/4/154「空白セルを検索する」は参考になるでしょうか。~
 
 //
 ***過去のサンプルから応用しました [#a7988281]
 >ike@九州 (2010-05-21 09:39:55 (金))~
 ~
 Excel ではシート内の表を自動判別して表内の空白セルを選択するようです~
 (罫線のみセルもサポートされてました)~
  'シート上の表内空白セルを調べる
  Sub EmptyCellDemo
   oCtrl = ThisComponent.getCurrentController()
   oSheet = oCtrl.getActiveSheet()
  
   '空白セルを探す表範囲を調べる
   '数値、文字、数式、日付、書式、罫線、コメント
   oCursor = oSheet.createCursor()
   oCursor.gotoStartOfUsedArea(false)
   aAddress = oCursor.getRangeAddress()
   nsCol = aAddress.StartColumn
   nsRow = aAddress.StartRow
   oCursor.gotoEndOfUsedArea(false)
   aAddress = oCursor.getRangeAddress()
   neCol = aAddress.EndColumn
   neRow = aAddress.EndRow   
   '罫線のみのセルは除外する場合、上9行をコメントして以下を使用
   '数値、文字、数式、日付
  '  oRanges = oSheet.queryContentCells(23)
  '  If oRanges.getCount = 0 Then Exit sub
  '  nsCol = 255
  '  nsRow = 65535
  '  oEnum = oRanges.createEnumeration  
  '  While oEnum.hasMoreElements()
  '   oRange = oEnum.nextElement()
  '   aAddress = oRange.getRangeAddress()  
  '   if nsCol > aAddress.StartColumn then nsCol = aAddress.StartColumn
  '   if nsRow > aAddress.StartRow then nsRow = aAddress.StartRow
  '   if neCol < aAddress.EndColumn then neCol = aAddress.EndColumn
  '   if neRow < aAddress.EndRow then neRow = aAddress.EndRow   
  '  Wend
   
   oTarget = oSheet.getCellRangeByPosition(nsCol,nsRow,neCol,neRow)
  
   '表範囲内の空白セルの範囲コンテナを取得
   oEmptyRanges = oTarget.queryEmptyCells
   If oEmptyRanges.getCount = 0 Then Exit Sub
  
   '空白セルを選択する
   oCtrl.Frame.getContainerWindow().toFront()
   oCtrl.Select(oEmptyRanges)
  
   '空白セル背景色を灰色にする場合コメント解除
  '  oEmptyRanges.CellBackColor = &HCCCCCC
  
   '各空白セルへ文字を入れる場合コメント解除
  '  oEnum = oEmptyRanges.createEnumeration
  '  While oEnum.hasMoreElements()
  '    oRange = oEnum.nextElement()
  '    If oRange.ImplementationName ="ScCellRangeObj" then
  '     aAddress = oRange.getRangeAddress()  
  '     neCol = aAddress.EndColumn - aAddress.StartColumn
  '     neRow = aAddress.EndRow - aAddress.StartRow  
  '     For i = 0 To neRow Step 1
  '      For j = 0 To neCol Step 1
  '       oRange.getCellByPosition(j,i).String ="―"
  '      Next
  '     Next
  '    Else
  '     oRange.string ="―"
  '    End if 
  '  Wend
  End Sub
 上記マクロを割り当てて実行すると以下のように選択します~
 #ref(result.png)~
 
 //
 #article