datové pole

otázka položena 2019-06-02 17:07:46 +0200

Neřešil jste někdo, jakým způsobem dostat hodnotu - datum z datového pole do předem dané buňky v Calcu (např. vždy do D2 - nikam jinam)? Již 2 dny hledám a našel jsem pouze makro, které mi hodnotu přenese do předem označené buňky před spuštěním makra. Když se ovšem spletu dostane se datum tam, kde ho nepotřebuji. Když jsem se snažil makro upravit a zadat v něm předem danou buňku, stejně mi to datum uložilo do původní buňky označené před spuštěním makra. To makro vypadá asi takto:

REM BASIC

Sub ZapisDatum 'zapise datum zadane datumovym polem do bunky s kurzorem dim oDoc, oSelect as object dim Result, shtname, DatPole as string, sht as integer DatPole = "datum1" ' nazev ve vlastnostech datumoveho pole musi souhlasit oDoc = ThisComponent
oSelect=oDoc.CurrentSelection.getRangeAddress 'oBrowser(oDoc.CurrentSelection.getRangeAddress) sht=oSelect.Sheet ' index listu s kurzorem shtname=oDoc.sheets(sht).name 'jmeno listu

oDatum = oDoc.Sheets(sht).DrawPage.Forms(shtname).getByName(DatPole) ' odkaz na datumove pole 'oDatum.HelpText="Zadejte nebo vyberte datum které bude vloženo na místo kurzoru." Result= oDatum.text On Local Error GoTo NODOCUMENTTYPE ' ignoruje chyby - např nesmyslne zadane datum ' zapsat do bunky na ktere je kurzor. if result <> "" then oDoc.sheets(sht).getCellByPosition(oSelect.StartColumn,oSelect.StartRow).Value = dateValue(Result) else oDoc.sheets(sht).getCellByPosition(oSelect.StartColumn,oSelect.StartRow).string = "" end if exit sub NODOCUMENTTYPE: beep End Sub

editovat změnit štítky označit porušení pravidel uzavřít spojit smazat

Komentáře

Jestli vám vyhovuje dané makro (a nepotřebujete do cílové buňky kopírovat např. z buňky právě vybrané), tak konec makra změňte na:

if result <> "" then

oDoc.sheets(sht).getCellByPosition(3,1).Value = dateValue(Result) 'buňka A1 je 0,0; D2 je tedy 3,1

else

oDoc.sheets(sht).getCellByPosition(3,1).string = "" 'i zde je adresa buňky D2 jakožto 3,1

end if

gravatar pro kamlankamlan ( 2019-06-03 10:36:03 +0200 )editovat