[gelöst] calc vba wenn Datum gefunden dann ...

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

Moderator: Moderatoren

hennech
Beiträge: 4
Registriert: Fr, 17.01.2014 16:40

[gelöst] calc vba wenn Datum gefunden dann ...

Beitrag von hennech »

Hallo,

ich bin zum ersten mal hier und bräuchte Hilfe bitte. (unabhängig von den Programmen!)

Es geht um eine Calc-Datei mit zwei Tabellen:

ich habe in Tabelle1!D5 ein Datum und in der Tabelle2!C1:C100 verschiedene Datums.

und ich habe zwei vba-Programme(programm1 und Programm2)

Wie kann ich das machen um folgendes zu erreichen:
wenn in Tabelle2!C1:C100 das gleiche Datum wie in Tabelle1!D5 gibt dann
Programm1 führen
ansonsten Programm2 führen
Ende


Danke im Voraus!
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: calc vba wenn Datum gefunden dann ...

Beitrag von clag »

Hallo Hennech,

nimm eine Hilfszelle zB "Tabelle1.E2" und ein einfaches =ZÄHLENWENN(Tabelle2.C1:C100;Tabelle1.D5) zum prüfen ob das Datum in der Liste mindestens einmal vorhanden ist
und den folgenden Code

Code: Alles auswählen

Sub choicemakro
myDoc = thisComponent
mySheet = myDoc.sheets(0)
mycell = mysheet.getCellByPosition(4,1) ' =E2
check = mycell.value
if check >0 then
call Makro01
else
call Makro02
end if
End Sub

sub Makro01
print " gleiches DATUM in der Liste vorhanden "
end sub

sub Makro02
print " kein gleiches DATUM gefunden "
end sub 
nun musst du nur noch überlegen wie du das Makro starten möchtest
beim laden der Datei oder auf klick auf einen Button.

Viel Spaß

edit:
zwei ! durch . ersetzt
Zuletzt geändert von clag am Sa, 18.01.2014 06:35, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: calc vba wenn Datum gefunden dann ...

Beitrag von balu »

Hallo Leute.

@clag
clag hat geschrieben: nimm eine Hilfszelle zB "Tabelle1.E2" und ein einfaches =ZÄHLENWENN(Tabelle2!C1:C100;Tabelle1!D5)
Sag mal mein lieber clag, hast Du denn gar nichts gelernt? :wink:
Wie soll denn die Formel in Calc funktionieren?



@hennech
ich bin zum ersten mal hier und bräuchte Hilfe bitte. (unabhängig von den Programmen!)
Das Du Hilfe brauchst versteh ich, aber den unterstrichenen Teil versteh ich überhaupt nicht. Was willst Du uns damit sagen?

Es geht um eine Calc-Datei mit zwei Tabellen:
Das ist eine sehr klare und eindeutige Aussage.

ich habe in Tabelle1!D5 ein Datum und in der Tabelle2!C1:C100 verschiedene Datums.
Aber ab jetzt geht das Chaos los.
In Calc wird so ein Zellbezug zu einer anderen Tabelle nicht geschrieben, und er wird auch nicht funktionieren. Richtig wäre:

Code: Alles auswählen

Tabelle1.D5
Tabelle2.C1:C100
Und nein! Das ist keine Haarspalterei, sondern ein essentieller extrem wichtiger Unterschied.

und ich habe zwei vba-Programme(programm1 und Programm2)
Meinst Du das jetzt im ernst, oder hast Du dich nur falsch ausgedrückt?
Hast Du wirklich in einer Calc-Datei Excel-Makros (VBA)?
Das sind sehr wichtige Fragen die Du unbedingt eindeutig beantworten musst. Und ich weise nicht umsonst darauf hin, denn nur bis zu einem gewissen Grad kann man unter bestimmten einfachen Bedingungen in Calc StarBasic mit VBA kombinieren. Aber ob das auf die Dauer gut geht, kann nicht garantiert werden. Hängt von der jeweiligen Situation ab. Aber die gleiche Kombination funktioniert in Excel bestimmt nicht.

Wie kann ich das machen um folgendes zu erreichen:
wenn in Tabelle2!C1:C100 das gleiche Datum wie in Tabelle1!D5 gibt dann
Programm1 führen
ansonsten Programm2 führen
Ende
Auch hier wieder die falsche Zellnotation, siehe oben.

Es wäre nicht verkehrt, wenn Du uns mitteilen würdest was Du mit deiner Datei denn nun genau machen willst. Genauso wichtig ist uns zu sagen ob die Datei nur in Calc, oder aber auch in Excel funktionieren soll. Denn wenn hier Lösungsvorschläge unterbreitet werden die in Calc via StarBasic funktionieren, so möchte ich dafür Wetten das dies NICHT in Excel funktioniert.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: calc vba wenn Datum gefunden dann ...

Beitrag von clag »

Moin Balu,


OMG welch Schande, ich habe hier einen "copy and paste" Fehler gemacht
und das böse ! nicht korrigiert und durch einen guten . ersetzt.

Das hol ich jetzt aber ganz schnell nach, damit mich ein Forums-Sheriff nicht auch noch in eine Calc-Zelle steckt :lol:

hey Balu guckst du mal unter deine Beiträge, was du da verkündest
balu hat geschrieben:wehr rächtschraipfähler findet khan si behalden :D
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
hennech
Beiträge: 4
Registriert: Fr, 17.01.2014 16:40

Re: calc vba wenn Datum gefunden dann ...

Beitrag von hennech »

guten Morgen,

erstmal vielen lieben Dank für alle Autworten und das Ihr euch überhaupt Gedanken über mein Problme gemacht habt! :D
@Blau:
balu hat geschrieben: @clag
clag hat geschrieben: nimm eine Hilfszelle zB "Tabelle1.E2" und ein einfaches =ZÄHLENWENN(Tabelle2!C1:C100;Tabelle1!D5)
Sag mal mein lieber clag, hast Du denn gar nichts gelernt? :wink:
Wie soll denn die Formel in Calc funktionieren?
das ist halt so wenn man nur mit Excel gearbeitet hat, da verwechselt man schnell alles :oops:

balu hat geschrieben: @hennech
ich bin zum ersten mal hier und bräuchte Hilfe bitte. (unabhängig von den Programmen!)
Das Du Hilfe brauchst versteh ich, aber den unterstrichenen Teil versteh ich überhaupt nicht. Was willst Du uns damit sagen?
Ich wollte nur die Vorgehensweise bzw. die Schreibweise wissen/kennenlernen, basteln wollte ich dann selber :D

balu hat geschrieben:
ich habe in Tabelle1!D5 ein Datum und in der Tabelle2!C1:C100 verschiedene Datums.
Aber ab jetzt geht das Chaos los.
In Calc wird so ein Zellbezug zu einer anderen Tabelle nicht geschrieben, und er wird auch nicht funktionieren. Richtig wäre:

Code: Alles auswählen

Tabelle1.D5
Tabelle2.C1:C100
Und nein! Das ist keine Haarspalterei, sondern ein essentieller extrem wichtiger Unterschied.
Danke für den Hinweis! :oops:

balu hat geschrieben:
und ich habe zwei vba-Programme(programm1 und Programm2)
Meinst Du das jetzt im ernst, oder hast Du dich nur falsch ausgedrückt?
Hast Du wirklich in einer Calc-Datei Excel-Makros (VBA)?
Das sind sehr wichtige Fragen die Du unbedingt eindeutig beantworten musst. Und ich weise nicht umsonst darauf hin, denn nur bis zu einem gewissen Grad kann man unter bestimmten einfachen Bedingungen in Calc StarBasic mit VBA kombinieren. Aber ob das auf die Dauer gut geht, kann nicht garantiert werden. Hängt von der jeweiligen Situation ab. Aber die gleiche Kombination funktioniert in Excel bestimmt nicht.
nur falsch ausgedrückt!!


@clag: 1000 Dank, ich habe dein Vorschlag getestet es funktioniert aber ich habe festgestellt, dass ich eigentlich nur das Datum der letzten bentzten Spalte mit dem Datum von Heute vergleichen brauche.
(Mit dem Button will ich jeden Tag eine neue Spalte einfügen! Aber am selben Tag immer nur eine einzige neue Spalte einfügen, ansonsten wenn man den Button mehrmals am selben Tag verwendet,soll die gleiche bereits eingefügte Spalte überschreiben werden)! <== ich hoffe, es ist klar^^

Es geht eigentlich nur um eine einfache Sache (Kopieren/einfügen). Demzufolge habe ich das so gemacht (s. Makro)

ich habe folgendes in meinem Programm eingefügt :

Code: Alles auswählen

ocell = osheet.getcellbyposition(ncolumn,nrow)
if ocell.Value = datevalue(now) then
.
.
else
.
.
End if  
und das ist das Ergebnis:

Code: Alles auswählen

Sub MyCopyPaste
Dim Doc As Object
Dim Sheet As Object
Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
Dim CellAddress As New com.sun.star.table.CellAddress


Doc = ThisComponent
Sheet = Doc.Sheets(0)
oSheet = ThisComponent.Sheets.getByIndex(1)
oRows = oSheet.getRows(5)

CellRangeAddress.Sheet = 0
CellRangeAddress.StartColumn = 5
CellRangeAddress.StartRow = 2
CellRangeAddress.EndColumn = 5
CellRangeAddress.EndRow = 26

oRow = oRows.getByIndex(5)
oEmptyranges = oRow.queryEmptyCells 'this returns a collection of empty cell ranges
Count = oEmptyranges.Count
StartCol = oEmptyranges.RangeAddresses(Count-1).StartColumn 'the Start Column of the last empty 

range in the row

ocell = osheet.getcellbyposition(StartCol -1,4)
if ocell.Value = datevalue(now) then

CellAddress.Sheet = 1
CellAddress.Column = StartCol-1
CellAddress.Row = 2

Sheet.copyRange(CellAddress, CellRangeAddress)
else 
   
CellAddress.Sheet = 1
CellAddress.Column = StartCol +1
CellAddress.Row = 2

Sheet.copyRange(CellAddress, CellRangeAddress)
End if  
End Sub
Also ich bedanke mich bei euch ud wünsche euch ein schönes WE!

NB: mein Beitrag kann geschlossen werden! Danke

hennech
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: calc vba wenn Datum gefunden dann ...

Beitrag von lorbass »

hennech hat geschrieben:NB: mein Beitrag kann geschlossen werden!
Es ist immer wieder gut zu erfahren, dass ein Problem gelöst wurde, eine Frage zufriedenstellen geklärt ist. Danke für deine Info!

Die Kennzeichnung eines Themas als »gelöst« soll durch den Fragesteller selbst im „Self Service“-Verfahren erfolgen. Dazu wird der erste Beitrag des Themas mit einem Klick auf Ändern zur Bearbeitung geöffnet. Dem Betreff wird dann ein Hinweis wie »[gelöst]« oder »[geschlossen]« vorangestellt und der Vorgang mit einem Klick auf Absenden beendet. Und das war's dann auch schon.

Dieses Thema habe übrigens ich schon für dich markiert.

Gruß
lorbass
Antworten