Переписать макрос под Calc

Автор W1ns, 1 февраля 2019, 09:46

0 Пользователи и 1 гость просматривают эту тему.

W1ns

Привет всем! Есть макрос, написанный под Excel, помогите, пожалуйста, переписать его под OpenOffice Calc.
Спасибо.

Sub Macro1()
Dim LastRow As Long, i As Long
   LastRow = Cells(Rows.Count, 1).End(xlUp).Row
   For i = LastRow To 6 Step -1
       If Cells(i - 1, 2) = Cells(i, 2) Then
           Cells(i - 1, 1) = Cells(i, 1) & ", " & Cells(i - 1, 1)
           Rows(i).Delete
       End If
   Next
End Sub

bigor

В libreoffice с Option VBASupport 1 должен и этот макрос  отработать
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

W1ns


bigor

Попробуйте тогда так:
Sub Macro1_1
Dim oSheets As Variant
Dim oSheet As Variant
Dim nCount As Long
Dim oEmptyRanges As Variant
Dim nLastRow As Long
oSheets = ThisComponent.getSheets()
oSheet = oSheets.getByIndex(0)
nCount = oSheet.getColumns().getByIndex(0).computeFunction(com.sun.star.sheet.GeneralFunction.COUNT)
For i = nCount To 5 Step -1
        If  oSheet.getCellByPosition(1,i - 1).string =  oSheet.getCellByPosition(1, i).string Then
             oSheet.getCellByPosition(0,i - 1).string =  oSheet.getCellByPosition(0,i).string & ", " &  oSheet.getCellByPosition(0,i - 1).string
             oSheet.getRows().removebyindex(i,1)
        End If
    Next

End Sub
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

W1ns

Bigor, спасибо работает. А можно сделать, чтобы новые значения подставлялись не в начало, а конец после запятой?

bigor

#5
Цитата: W1ns от  1 февраля 2019, 11:20можно сделать, чтобы новые значения подставлялись не в начало, а конец после запятой?
можно, замените строку после then
oSheet.getCellByPosition(0,i - 1).string =  oSheet.getCellByPosition(0,i-1).string & ", " &  oSheet.getCellByPosition(0,i).string


ps и это Dim oEmptyRanges As Variant
Dim nLastRow As Long

можно удалить.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

W1ns

Спасибо большое, теперь все работает хорошо)