hi ihr - als OO calc newbie hier mal ne makro - frage

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

jensspeedy
Beiträge: 8
Registriert: Sa, 19.05.2007 17:19

hi ihr - als OO calc newbie hier mal ne makro - frage

Beitrag von jensspeedy »

ok - ich gebs ja zu - eigentlich bin ich nen excel-user - aber in der neuen firma arbeitet alles mit OO als was solls ;-)

hab in ner excel-xls (beispiel siehe hier http://disic.de/test/Mappe4_bastel_2.zip ) nen sortiermakro laufen - ist zwar zugegebenermaßen noch nicht ganz fertig aber .............

wenn ich die datei - die ja im excel soweit funktioniert - im calc öffne kann ich zwar die auswahlfelder ausklappen aber das makro selber zum sortieren springt irgendwie nicht an

ich würde es ja nun gern so hinbasteln dass das makro in excel UND in OO funktioniert - geht das überhaupt *grübel* - ick hoffe doch ;-)

das makro was derzeit im excel läuft ist dieses:

Code: Alles auswählen

Private Sub Worksheet_Change(ByVal Target As Range) 
If Intersect(Target, Range("A1:C1")) Is Nothing Then Exit Sub 
With Target.Offset(0, 1) 
    .Select 
    Application.EnableEvents = False 
    .Value = Tabelle2.Range("A1") 
    Application.EnableEvents = True 
End With 
End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
'Auf A1:D1 beschränken 
If Target.Row > 1 Then Exit Sub 
If Target.Column > 4 Then Exit Sub 
If Target.Count > 1 Then Exit Sub 
If Target.Address <> "$D$1" Then Range("D1").ClearContents 
If Target.Column = 1 Then 
    Call Box_Fuellen(1, "") 
Else: 
    Call Box_Fuellen(Target.Column, Target.Offset(0, -1).Value) 
End If 
End Sub 


Public Sub Box_Fuellen(spalte, was) 
Dim arr 
Dim ScrDic 
Dim L As Long 
Dim a As Long 
Tabelle2.Range("A:A").ClearContents 
a = 1 
Set ScrDic = CreateObject("Scripting.dictionary") 
arr = Range("A4").CurrentRegion.Offset(1, 0) 
On Error Resume Next 
Select Case was 
    Case "" 
    For L = 1 To UBound(arr) 
        If Not ScrDic.exists(arr(L, 1)) Then 
            ScrDic.Add arr(L, 1), "Irgendwas" 
            Tabelle2.Cells(a, 1) = arr(L, 1) 
            a = a + 1 
        End If 
    Next 
    Case Else 
    For L = 1 To UBound(arr) 
        If arr(L, spalte - 1) = was Then 
            If Not ScrDic.exists(arr(L, spalte)) Then 
                ScrDic.Add arr(L, spalte), "Irgendwas" 
                Tabelle2.Cells(a, 1) = arr(L, spalte) 
                a = a + 1 
            End If 
        End If 
    Next 
End Select 
Set ScrDic = Nothing 
End Sub 

gibt es ne einigermassen einfache methode dieses makro so zu gestalten dass es in beiden tabellenkalkulationen läuft?

ok - ich gebs ja zu - bin in der excel-programmierung auch noch nen newbie - aber man will ja lernen ;-)

euch erst mal noch nen schönen samstag und so
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

ich würde es ja nun gern so hinbasteln dass das makro in excel UND in OO funktioniert - geht das überhaupt *grübel*
Nein.(*)


Gruß
Stephan

(*)
Es gibt in den Novell-Versionen von OOo die Möglichkeit einfache (!) VBA-Makros laufen zu lassen, Lösung ist das aber nicht wirklich sdazu ist der Funktionsumfang zu gering und außerdem bist Du praktisch immer auf die Novell-Versionen angewiesen.
jensspeedy
Beiträge: 8
Registriert: Sa, 19.05.2007 17:19

mmmmmmmhhhhhhhhh

Beitrag von jensspeedy »

na toll

ok - wie gesagt - newbie *schnief*

deshalb mal ganz blond die frage - wenn man nun beider versionen des makros in die tabelle pflanzt - müßte dann nicht excel dass OOmakro ignorieren und seines ausführen und umgekehrt?

so nach dem motto - dich kenn ich nicht dich mach ich nicht?

jens
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

wenn man nun beider versionen des makros in die tabelle pflanzt - müßte dann nicht excel dass OOmakro ignorieren und seines ausführen und umgekehrt?
Nein. VBA-Makros werden in OOo (mit der geschilderten Ausnahme Novell) grundsätzlich nicht ausgeführt, selbst dann nicht wenn sie funktionieren würden, denn zweifelsfrei ist ja ein einfaches:

Code: Alles auswählen

Sub Hello()
Msgbox "Hello World"
End Sub
in Excel und OOo identisch.


Gruß
Stephan
jensspeedy
Beiträge: 8
Registriert: Sa, 19.05.2007 17:19

mhh

Beitrag von jensspeedy »

ok - iss zwar zum brechen aber nun mal nicht zu ändern

ok - was würde denn passieren wenn das exel-makro in der tabelle in zeile 2 positioniert wird für die suche bzw. auswahl und das makro für OO in zeile 4 ?

wenn man im exel arbeitet müßte ja dann zeile 4 ausser funktion sein und zeile 2 arbeiten und umgekehrt - oder geht das auch nicht

das problem besteht darin dass meine beispieldatei an kunden verschickt werde´n soll wo man ja nie weiss was die so für software auf dem compi haben.

gruß jens
Siox
Beiträge: 7
Registriert: Fr, 18.05.2007 18:21

Beitrag von Siox »

Da OO so extrem kostenlastig in der Anschaffung ist, wirst du deinen Kunden fragen müssen, welche Software er denn einsetzt. ^^

OO hat den riesen Vorteil, das man es in ein heterogenes Netzwerk integrieren kann. Das kann MSO nicht! Und das bisschen umlernen ist doch nicht die Welt.

Gruß
Antworten