LibreOffice Calc Basic - 範囲の値をコピーする方法
◆copyRangeメソッド
LibreOffice Basicでセルの値をコピーするには、copyRangeメソッドを使用します。
この場合、書式も一緒にコピーされます。
次の例では、1枚目のシートのA1からB5までのデータをD1からE5にコピーしています。
Sub oCopyRange Dim oDoc As Object Dim oSheet As Object Dim oRangeAddress As Object Dim oCellAddress As Object oDoc=ThisComponent oSheet = oDoc.Sheets(0) oRangeAddress = oSheet.getCellRangeByName("A1:B5").getRangeAddress() rem D1に貼り付け oCellAddress = oSheet.getCellByPosition(3,0).getCellAddress() oSheet.copyRange(oCellAddress, oRangeAddress) End SUb
◆値貼付をしたい場合
貼付先のセルのValueプロパティに貼付元のセルのValueプロパティを代入することで可能です。
次の例のようにイコール記号の左側に貼り付けたい先のセル、右側に貼付元のセルを指定すると書式はコピーされず、値貼付になります。
例えば、次のコードでは、セルA1の値をセルD1に値のみコピーします。
Sub CopyCell ThisComponent.Sheets(0).getCellByPosition(3,0).Value= _ ThisComponent.Sheets(0).getCellByPosition(0,0).value End Sub
次の例は、1枚目のシートのA1からB5までのデータをD1からE5に値貼付をする例です。
Sub oCopyRangeValue Dim oDoc As Object Dim oSheet As Object Dim oRangeAddress As Object Dim oCellAddress As Object dim i% dim j% oDoc=ThisComponent oSheet = oDoc.Sheets(0) For i=3 to 4 Step 1 rem 列 For j=0 to 4 Step 1 rem 行 oDoc.Sheets(0).getCellByPosition(i,j).Value= _ oDoc.Sheets(0).getCellByPosition(i-3,j).value Next j Next i End Sub
LibreOfficeの場合、セルの指定は(列、行)となりますので、iで列を、jで行を表しています。
▼ページトップへ