HILFEEEE VBA-CODE

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

HILFEEEE VBA-CODE

Beitrag von nusta88 »

hallo,

ich hab den Auftrag bekommen, diesen Code zu konvertieren:

Private Sub PruefeAuswahl(ind, auswahl)

ret = False
If (auswahl <> " " And auswahl <> "") Then
If ((ind <> 1 And auswahl = Boni1) _
Or (ind <> 2 And auswahl = Boni2) _
Or (ind <> 3 And auswahl = Boni3) _
Or (ind <> 4 And auswahl = Boni4) _
Or (ind <> 5 And auswahl = Boni5) _
Or (ind <> 6 And auswahl = Boni6)) Then
MsgBox ("Dieser Eintrag wurde bereits ausgewählt. Doppelte Einträge sind nicht erlaubt!")
auswahl.Activate
Else: ret = True
End If
Else: ret = True
End If

End Sub

Private Sub Boni1_Change()
Dim oSheets as Object

oSheets = ThisComponent.CurrentController.ActiveSheet
oSheets.Unprotect "liza"

ret = True
Call PruefeAuswahl(1, Me.Boni1)
If (ret = True) Then
If (Me.Boni1 <> " " And Me.Boni1 <> "") Then
Cells(8, 4).Select
Else
Cells(8, 6) = Null
Cells(8, 4) = Null
End If
Cells(8, 1) = Me.Boni1 + " "
End If
Excel.ActiveSheet.Protect "liza"
End Sub

Wer könnte mir jetzt bei der Konvertierung helfen?
Ich bin auf eure Hilfe angewiesen.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: HILFEEEE VBA-CODE

Beitrag von komma4 »

Du hast das Forum schon durchsucht (wie man VBA-Code umstellt) - und alle Verweise brachten Dich nicht weiter?

Wo liegt Dein Problem beim Umsetzen? Ich sehe da erstmal keine Schwierigkeiten....
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Re: HILFEEEE VBA-CODE

Beitrag von nusta88 »

Du hast das Forum schon durchsucht (wie man VBA-Code umstellt) - und alle Verweise brachten Dich nicht weiter?

Wo liegt Dein Problem beim Umsetzen? Ich sehe da erstmal keine Schwierigkeiten....
Ja dachte ich auch, aber wenn du das kopiert haben solltest, kommt direkt am Anfang eine Fehlermeldung, die ich nicht lösen kann.

PS: da ich selbst was anderes weiterprogrammiere habe ich da paar Probleme:

1. Ich sage, dass es z.B von Zelle a1 die Zahl entnehmen soll und in Zelle a2 anzeigen soll, aaaber bei zelle a2 steht die zahl dann nicht mehr als 2 sondern als ' 2 also es wird nicht als Zahl anerkannt, wenn ihr mir bei diesem Problem weiterhelfen könntet wäre ich sehr dankbar.

2. Cells(27, 4).Font.ColorIndex = 1
hier weiß cih wieder mal nicht wie ich es umschreiben muss damit das starbasic anerkennt.

Danke im Voraus bis dann.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: HILFEEEE VBA-CODE

Beitrag von komma4 »

...welche Fehlermeldung ... an welcher Stelle?


"auswahl" (den gewählten Zellwert) hast Du natürlich umgesetzt, oder?

im rufenden Code müsste das so aussehen:

Code: Alles auswählen

oAuswahl = ThisComponent.getCurrentSelection()
PruefeAuswahl( ind, oAuswahl.getString() )
Dann geht "natürlich" auch nicht auswahl.activate (aber ein oAuswahl.Select )

Zeige uns, was Du bis jetzt konvertiert hast, dann können wir auch helfen.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Re: HILFEEEE VBA-CODE

Beitrag von nusta88 »

Sooo ich bin damit ganz weit gekommen, aber habe drei Sachen nicht geschaft die sich sehr ähnel. Und komma du hast mir weitergehofen thx. Was nicht funktinoiert hab ich mit einem Kommentar bekennzeichnet.

Code: Alles auswählen

Private Sub Boni1_Change()
Dim oSheets as Object, oDpage as Object, oForm as Object, oView, Boni1 as Object, Boni12 as string
oSheets = ThisComponent.CurrentController.ActiveSheet
oSheets.Unprotect "liza"

  oSheet = ThisComponent.Sheets.getByName("Kalkulationsblatt")
  oDpage = oSheet.DrawPage
  oForm = oDpage.Forms.getByName("K")
  oView = ThisComponent.CurrentController
  Boni1 = oForm.getByName("Boni1")
  Boni12 = oView.GetControl(Boni1).getselectedItem

    ret = True
    Call PruefeAuswahl(1, Boni12)
    If (ret = True) Then
       If (Boni12 <> " " And Boni12 <> "") Then
          oSheet.getCellbyPosition(3, 7).select  'Funktioniert nicht
       Else
          oSheet.getCellbyPosition(5, 7).setformula(Null) 'Funktioniert auch nicht 
          Cells(8, 4) = Null
       End If
    oSheet.getCell(0, 7).setFormula(Me.Boni1 + "    ") 'Funktioniert auch nicht
    End If
    'OSheets.Protect "liza"
End Sub

Private Sub PruefeAuswahl(ind, auswahl)
Dim oSheets as Object, oDpage as Object, oForm as Object, oView, Boni1 as Object, Boni2 as Object, Boni3 as Object, Boni4 as Object, Boni5 as Object
Dim Boni12 as string, Boni22 as string, Boni32 as string, Boni42 as string, Boni52 as string 


  oSheet = ThisComponent.Sheets.getByName("Kalkulationsblatt")
  oSheet2 = ThisComponent.Sheets.getByName("Formeln")
  oDpage = oSheet.DrawPage
  oForm = oDpage.Forms.getByName("K")
  oView = ThisComponent.CurrentController
  Boni1 = oForm.getByName("Boni1")
  Boni2 = oForm.getByName("Boni2")
  Boni3 = oForm.getByName("Boni3") 
  Boni4 = oForm.getByName("Boni4")
  Boni5 = oForm.getByName("Boni5")
  Boni1 = oForm.getByName("Boni1")
  Boni12 = oView.GetControl(Boni1).getselectedItem
  Boni22 = oView.GetControl(Boni2).getselectedItem
  Boni32 = oView.GetControl(Boni3).getselectedItem
  Boni42 = oView.GetControl(Boni4).getselectedItem
  Boni52 = oView.GetControl(Boni5).getselectedItem
  
  
ret = False

If (Auswahl <> " " And Auswahl <> "") Then
  If ((ind <> 1 And auswahl = Boni12) _
     Or(ind <> 2 And auswahl = Boni22) _
   Or (ind <> 3 And Auswahl = Boni32) _
    Or (ind <> 4 And Auswahl = Boni42) _
 Or (ind <> 5 And Auswahl = Boni52)) Then
   MsgBox ("Dieser Eintrag wurde bereits ausgewählt. Doppelte Einträge sind nicht erlaubt!")
     'auswahl.Activate
   Else: ret = True
 End If
Else: ret = True
  End If

End Sub
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: HILFEEEE VBA-CODE

Beitrag von komma4 »

Bonil ist Deine Liste? Und Du möchstest prüfen, ob ein Eintrag gewählt wurde (Du hast doch keine Listeneinträge, die "ein Blank" haben, oder?)?
Dann nicht so,

Code: Alles auswählen

  If (Boni12 <> " " And Boni12 <> "") Then
sondern:

Code: Alles auswählen

If Bonil.getSelectedItems <> -1 then  ' es wurde mind. ein Einrtag gewählt 
oSheet.getCellbyPosition(5, 7).setformula(Null) 'Funktioniert auch nicht
Was ist "Null"? Du möchtest die Berechnungsformel der Zelle löschen? Was passiert bei

Code: Alles auswählen

    oSheet.getCellbyPosition(5, 7).setformula( "" ) ' untested ! 
oSheet.getCell(0, 7).setFormula(Me.Boni1 + " ") 'Funktioniert auch nicht
Das kann nicht funktionieren, da es Me bei OOo nicht gibt. Und was sollen die Leerstellen? Meinst Du hier vielleicht ein .setString()
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Re: HILFEEEE VBA-CODE

Beitrag von nusta88 »

Ja, danke jetzt hab ich alles auser mit select. OOo Basic nimmt ja auch select irgendwie nicht an. Also ich brauche einmal noch für select und activate eine Bezeichnung.

Code: Alles auswählen

oSheet.getCellbyPosition(3, 9).Select

Code: Alles auswählen

oSheet.getCellbyPosition(3, 9).activate
Die beiden nimmt das Programm nicht an.

Code: Alles auswählen

osheet.getcellbyPosition(3, 27).setFormula(erg * osheet.getcellbyPosition(5, 27).value)
Hier ist der Fehler, dass in Zelle 3,27 nicht eine Zahl sondern eine Zahl mit ' 2 so ausgegeben wird. Das ist bei allen Zellen mit value so. Ich verstehe nicht wieso es nicht als Zahl ausgibt.

Ich würde mich über schnelle Antworten freuen. Und sehr sehr vielen Dank
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: HILFEEEE VBA-CODE

Beitrag von komma4 »

SELECT ist eine Methode, die über den VIEW der Anwendung geht:
aus Andrews Makro-Dokument

Code: Alles auswählen

  Dim oCell
  Dim oSheet

  REM Get the first sheet.
  oSheet = ThisComponent.getSheets().getByIndex(0)
  REM Get cell A2
  oCell = oSheet.GetCellbyPosition( 0, 1 )
  REM Move the selection to cell A2
  ThisComponent.CurrentController.Select(oCell)


Zellen mit Hochkomma (erzwungene Text-Formatierung):

mit .VALUE bekommst Du den Wert (nummerisch) einer Zelle; steht darin eine Zahl hinter einem Hochkomma, so wird Null zurück gegeben

a) umwandeln der Zellen in einen nummerischen Wert (mit reg. Ausdrücken; über Makro, bspw. Txt2Num
b)

Code: Alles auswählen

osheet.getcellbyPosition(3, 27).setFormula(erg * CInt( osheet.getcellbyPosition(5, 27).value)  )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Re: HILFEEEE VBA-CODE

Beitrag von nusta88 »

Ja noch mal vielen Dank komma,

ich hab das jetzt mit select dank deiner Hilfe hinbekomme, nur wenn ich die listbox betätige dann Selektiert er zwar die Zelle aber die Listbox bleibt auch Selektiert und ich kann dann nichts in die Zelle reinschreiben, da 2 Selektionen vorhanden sind.

Meine Frage ist jetzt, wie schaffe ich die Selektion oder Aktivierung kein Plan wie das heiß im Listbox abzuwählen. Warte auf Codes danke.
nusta88
***
Beiträge: 78
Registriert: Di, 26.06.2007 13:30

Re: HILFEEEE VBA-CODE

Beitrag von nusta88 »

Hallo,

warte immer noch auf Antworten. Bitte um Hilfe.
Antworten