Помогите переделать макрос из ексель в calc

Автор Rezak, 17 июля 2024, 15:41

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

Rezak

Добрый день, перешли на либре офис, был макрос для добавления значений в ячейку не удаляя уже введенные данные, в либре офис макрос не работает и выдает ошибку. Кто знаток в программирование, помоги переделать...

Sub Main
Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

    If Not Intersect(Target, Range("B7:B23")) Is Nothing Then
        If IsNumeric(Target.Value) Then
            Application.EnableEvents = False
            Target.Offset(0, 3).Value = Target.Offset(0, 3).Value + Target.Value
            Application.EnableEvents = True
        End If
    End If
   
    If Not Intersect(Target, Range("B26:B37")) Is Nothing Then
        If IsNumeric(Target.Value) Then
            Application.EnableEvents = False
            Target.Offset(0, 3).Value = Target.Offset(0, 3).Value + Target.Value
            Application.EnableEvents = True
        End If
    End If

End Sub

Этот код был в майрософт ексель

bigor

Как вариант. Макрос повесить на событие листа - содержимое изменено
Sub on_Change(oEvent As Variant)

    If oEvent.supportsService("com.sun.star.sheet.SheetCell") Then
    If (oEvent.RangeAddress.StartColumn = 1) And _
    (oEvent.RangeAddress.StartRow >= 1) And _
    (oEvent.RangeAddress.StartRow <= 22)  Then ' В диапазоне "b2:b23"
            thiscomponent.sheets(oEvent.RangeAddress.sheet).getCellbyPosition(oEvent.RangeAddress.StartColumn+3,oEvent.RangeAddress.StartRow).Value= _
            thiscomponent.sheets(oEvent.RangeAddress.sheet).getCellbyPosition(oEvent.RangeAddress.StartColumn+3,oEvent.RangeAddress.StartRow).Value + oEvent.value
        End If
        If (oEvent.RangeAddress.StartColumn = 1) And _
    (oEvent.RangeAddress.StartRow >= 25) And _
    (oEvent.RangeAddress.StartRow <= 36)  Then
            thiscomponent.sheets(oEvent.RangeAddress.sheet).getCellbyPosition(oEvent.RangeAddress.StartColumn+3,oEvent.RangeAddress.StartRow).Value= _
            thiscomponent.sheets(oEvent.RangeAddress.sheet).getCellbyPosition(oEvent.RangeAddress.StartColumn+3,oEvent.RangeAddress.StartRow).Value + oEvent.value
        End If
end if       
       
End Sub
Поддержать наш форум можно здесь