End(xlUp).Row , End(xlToLeft).Column

エクステンションの作成、共用ライブラリ

End(xlUp).Row , End(xlToLeft).Column

投稿記事by K.Tsunoda » 8月 7th, 2009, 5:52 pm

VBAでの End(xlUp).Row , End(xlToLeft).Column に相当する処理の汎用関数ができました。

はにゃ?さんの [OOo bbs 2/16] に掲載されているコードを元にしています。
http://hermione.s41.xrea.com/pukiwiki/p ... obbs2%2F16

全て空セルのケースや、行方向/列方向の判別、指定セル範囲の属性の違い等の改善を施して作成しました。

GetLastCell 関数 (2009/8/8 Ver 1.1)
http://blog.livedoor.jp/addinbox/archives/51212979.html

コード: 全て選択   展開ビュー折りたたみビュー
'~~ 利用例 ~~
Sub Main
Dim oSheet As Object
Dim oCell As Object

oSheet = ThisComponent.Sheets(0)

'oCell = GetLastCell(oSheet.Rows(1),True)
'oCell = GetLastCell(oSheet.getCellRangeByName("A2:IV2"),True)

'oCell = GetLastCell(oSheet.Columns(0),True)
oCell = GetLastCell(oSheet.getCellRangeByName("A1:A65536"),True)

MsgBox oCell.AbsoluteName
End Sub



AddinBox/VBAユーザーの為のOpenOffice.org 備忘録 『ユーザー定義関数の一覧
http://blog.livedoor.jp/addinbox/archives/51249421.html
K.Tsunoda
 
記事: 71
登録日時: 11月 2nd, 2008, 6:44 pm

Re: End(xlUp).Row , End(xlToLeft).Column

投稿記事by K.Tsunoda » 8月 8th, 2009, 12:53 am

2009/8/8 Ver 1.1 修正
最終セルがEmptyではない場合に正しい結果が得られなかった不具合を修正しました。
1要素のみのセル範囲コンテナから取り出したオブジェクトの判定が抜けていたので追加しました。

コード: 全て選択   展開ビュー折りたたみビュー
    Case "ScCellRangesObj", "ScTableColumnsObj", "ScTableRowsObj"
      oRanges = argRowCol
      If (oRanges.Count = 1) Then
        oRowCol = oRanges(0)
        Select Case oRowCol.ImplementationName
          Case "ScCellObj"
            GetLastCell = Nothing
            Exit Function
          Case "ScCellRangeObj", "ScTableColumnObj", "ScTableRowObj"
            'OK
          Case "ScCellRangesObj", "ScTableColumnsObj", "ScTableRowsObj"
            GetLastCell = Nothing
            Exit Function
          Case Else
            GetLastCell = Nothing
            Exit Function
        End Select
      Else


コード: 全て選択   展開ビュー折りたたみビュー
  'Last cell is Empty?
  With oRowCol.RangeAddress
    oCell = oRowCol.SpreadSheet.getCellByPosition(.EndColumn, .EndRow)
    If (oCell.Type <> com.sun.star.table.CellContentType.EMPTY) Then
      If blnNextCell Then
        ktGetLastCell = Nothing
      Else
        ktGetLastCell = oCell
      End If
      Exit Function
    End If
  End With
  oEmptyRanges = oRowCol.queryEmptyCells()
  intEmptyRangesCount = oEmptyRanges.Count
K.Tsunoda
 
記事: 71
登録日時: 11月 2nd, 2008, 6:44 pm


Return to コードスニペット(便利な汎用コード)

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]

cron