Seite 1 von 1
HILFEEEE VBA-CODE
Verfasst: Do, 28.06.2007 10:27
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.
Re: HILFEEEE VBA-CODE
Verfasst: Do, 28.06.2007 13:21
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....
Re: HILFEEEE VBA-CODE
Verfasst: Do, 28.06.2007 13:27
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.
Re: HILFEEEE VBA-CODE
Verfasst: Do, 28.06.2007 14:33
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.
Re: HILFEEEE VBA-CODE
Verfasst: Do, 28.06.2007 16:36
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
Re: HILFEEEE VBA-CODE
Verfasst: Do, 28.06.2007 17:36
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,
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()
Re: HILFEEEE VBA-CODE
Verfasst: Fr, 29.06.2007 09:28
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.
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
Re: HILFEEEE VBA-CODE
Verfasst: Fr, 29.06.2007 10:00
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) )
Re: HILFEEEE VBA-CODE
Verfasst: Fr, 29.06.2007 15:49
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.
Re: HILFEEEE VBA-CODE
Verfasst: So, 01.07.2007 10:59
von nusta88
Hallo,
warte immer noch auf Antworten. Bitte um Hilfe.