vMyBUF()() ·¿¤ÎÊÑ¿ô¤òÀßÄꤹ¤ëÊýË¡-setFormulaArray-¤Î´Ø·¸¤«¤é †
¥Ú¡¼¥¸ | OpenOffice.org FAQ¤ÎÅÐÏ¿¥Ú¡¼¥¸ |
---|---|
Åê¹Æ¼Ô | mr_happy |
ʬÎà | |
Í¥Àè½ç°Ì | |
¾õÂÖ | |
¥«¥Æ¥´¥ê¡¼ | |
Åê¹ÆÆü | 2011-05-08 09:59:49 (Æü) |
OS | Win7 |
°Í¸¤¹¤ë¥Ú¡¼¥¸ | faq/6/205, faq/6/211 |
¥Ð¡¼¥¸¥ç¥ó |
¥á¥Ã¥»¡¼¥¸ †
²óÅú¥Ú¡¼¥¸¤Ç¤Ï¹ÔËö¤Ë¡Ö~¡×¤òÉղ乤ëɬÍפϤ¢¤ê¤Þ¤»¤ó |
¤ªÀ¤Ïäˤʤê¤Þ¤¹¡£
vMyBUF(10)(4) ·¿¤ÎÇÛÎóÊÑ¿ô¤Ï¤É¤Î¤è¤¦¤ËÀë¸À¤¹¤ì¤Ð»È¤¨¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©
¤¤¤í¤¤¤í¤ä¤Ã¤Æ¤ß¤Æ¤Ï¤¤¤ë¤Î¤Ç¤¹¤¬¤¦¤Þ¤¯¤æ¤¤Þ¤»¤ó¡£
¤É¤Ê¤¿¤«¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£
Dim vBuf vBuf = oRSheet.getCellRangeByName("B1:E10").getFormulaArray
¤³¤ì¤Ï vBuf(x)(y)¡¡¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇÛÎóÊÑ¿ô¤È¤Ê¤ê¡¢x,y¤ÎÃͤǤ½¤ì¤¾¤ì¤Î¥»¥ëÃͤȤʤê¤Þ¤¹¡£
¤³¤Î·¿¤ÈƱ¤¸ÇÛÎó¤ò¼¡¤Î¤è¤¦¤ËÀë¸À¤·¤Æ¤â¥¨¥é¡¼¤È¤Ê¤ê¤Þ¤¹¡£
Dim vMyBUF ¡Á ReDim vMyBUF(10)(4) ' ¤³¤³¤Ç¥¨¥é¡¼ ¤Þ¤¿¤Ï Dim vMyBUF()() ' ¤³¤³¤Ç¥¨¥é¡¼
¤È¤Ê¤ê¡¢»ÈÍѤ¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó¡£
»È¤¤Êý¤È¤·¤Æ¤ÏÎ㤨¤Ð
vMyBUF(y)(x) = vBuf(y)(x) * 5
¤ÎÍͤËgetFormulaArray¤ägetDataArray¤ÇÆÀ¤¿¥Ç¡¼¥¿¤ò
Ê̤ËÀë¸À¤·¤¿ÇÛÎóÊÑ¿ô¤ËÂåÆþ¤·¤Æ
setFormulaArray(vMyBUF) ¤ò»È¤¤°ì³ç¤·¤Æ¥»¥ë¤Ë½ñ¤¹þ¤ß¤¿¤¤¤ï¤±¤Ç¤¹¡£
º£¤Î¤È¤³¤í¤Ï
vMyBUF = vBuf
¤È¤·¤Æ vMyBUF ¤ÎÃͤò¾Ãµî¤·¤Æ»È¤¦ÊýË¡¤ò¹Í¤¨¤Æ¤¤¤Þ¤¹¤¬¡¢ ¤É¤¦¤âµ¤¤Ë¿©¤ï¤Ê¤¯¤Æ¡¦¡¦¡¦
¾°¡¢½ñ¤¹þ¤ß¤ËºÝ¤·¡¢½ñ¤¹þ¤ß¤¿¤¤ºÇ½é¤Î¥¢¥É¥ì¥¹¤ÈvMyBUF ¤Ëºî¤é¤ì¤¿ÇÛÎ󤫤é
Sub f_GetXY(oOneRng, vMyBUF, x1, y1, x2, y2) Dim oOneAdr oOneAdr = oOneRng.getRangeAddress() x1 = oOneAdr.StartColumn y1 = oOneAdr.StartRow x2 = Ubound(vMyBUF(0)) + x1 y2 = Ubound(vMyBUF) + y1 End Sub
¤È¤·¤Æ¡¢setCellRangeByPosition(x1, y1, x2, y2)¤òÆÀ¤Æ¤¤¤Þ¤¹¡£ ¤è¤í¤·¤¯¤ª´ê¤¤¤·¤Þ¤¹¡£
Æó¼¡¸µÇÛÎó¤ÎÌäÂê¤Ç¤¹¤è¤Í †
M.Kamataki (2011-05-09 11:39:31 (·î))
°Ê²¼¤ÎOOoBasic¥µ¥¤¥È¤Î¤´¼ÁÌä¤ÈƱ¤¸¤Ç¤·¤ç¤¦¤«¡£
CellRange¤Ë¤Ä¤¤¤Æ¤ÎDataArray, getDataArray, setDataArray¤Î»È¤¤Êý
http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOobbs%2F28
zDR¤ÏɬÍפǤ¹¤«¡£¡¡¤Þ¤¿yDR¤Ø¤ÎÂåÆþ¤òFor¤Ê¤É»È¤¨¤Ê¤¤¤Ç¤·¤ç¤¦¤« †
mr_happy (2011-05-14 20:41:53 (ÅÚ))
M.Kamataki¤µ¤ó¡¡¤¤¤Ä¤â¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£
Á᮸«¤Æ¡¢¤¤¤í¤¤¤í¤ä¤Ã¤Æ¤ß¤Þ¤·¤¿¡£
¤½¤ÎÊǤκǸå¤Ë¤¢¤ë¥Þ¥¯¥í¤¬°Ê²¼¤Ç¤¹¡£Sub MyTest2() Dim oSheet As Object Dim oRange, yCursor As object Dim zDR() as object Dim yDR(3) oSheet = ThisComponent.CurrentController.ActiveSheet For i=0 to 3 yDR(i) = Array("A" & CStr(i), "B" & CStr(i)) Next i zDR() = Array(yDR(0),yDR(1),yDR(2),yDR(3)) yCursor = oSheet.getCellRangeByPosition(1, 1, 2, 4) yCursor.setDataArray(zDR()) End Sub¡¤³¤ÎÃæ¤Ç¡¢yDR ¤â zDR ¤âÁ´¤¯Æ±¤¸ÆâÍÆ¤Ç¡¢¤É¤Á¤é¤ò»È¤Ã¤Æ¤â¤¦¤Þ¤¯¤æ¤¤Þ¤·¤¿¡£~
¤Ê¤é¤Ð¡¢zDR() = Array(yDR(0),yDR(1),yDR(2),yDR(3))¡¡¤ÏÉÔÍפÀ¤È»×¤¤¤Þ¤¹¤¬¤³¤ÎÊդϤɤ¦¤Ê¤Î¤Ç¤·¤ç¤¦¤«¡©
¢yDR(i) = Array("A" & CStr(i), "B" & CStr(i))¡¡~
¤³¤ÎÎã¤Ç¤ÏyDR¤Î±¦Êդιब£²¤Ä¡Ê£²¹Ôʬ¡Ë¤Ç¤¹¤¬¡¢¤â¤Ã¤È¿¤¯¤Ê¤ë¤È¡Ê¿ô½½¹Ô¡ËÂçÊѤʤ³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤³¤Î¤È¤³¤í¤Î¼ÂºÝ¤Î¥Ç¡¼¥¿¤¬£³¹Ôʬ¤ÎÎã¤Ç~yDR(i) = Array(Hairetu(i,k), Hairetu(i,k+1), Hairetu(i,k+2))¤À¤È¤·¤¿»þ¡¢¤³¤Î±¦ÊÕ¤ò¡¡For Next ¤Ê¤É»È¤¤·Ò¤²¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©¡¡Î㤨¤Ð
For i=0 To 3 For k=0 To 2 yDR(i) = Array(Hairetu(i,k)) Next Next¤Î¤è¤¦¤ÊÊýË¡¤Ç¡£
¼«Ê¬¤Ç¤Ï¤¤¤í¤¤¤í¹©Éפ·¤Æ¤ß¤¿¤Î¤Ç¤¹¤¬¤¦¤Þ¤¯¤æ¤¤Þ¤»¤ó¡£
¥¢¥É¥Ð¥¤¥¹¤ò¤ª´ê¤¤¤·¤Þ¤¹¡£
Dim ¤ÇÄêµÁ¤·¤¿Â¿¼¡¸µÇÛÎó¤ÈUNO¤«¤é¤ÎÇÛÎó †
¤Ï¤Ë¤ã? (2011-05-15 01:40:47 (Æü))
OOo Basic ¤Ç¤ÏDim a(5,3) ¤Ê¤É¤È¤·¤ÆÄêµÁ¤·¤¿ÇÛÎó¤Ï UNO ¤ÇÍøÍѤµ¤ì¤ë¿¼¡¸µÇÛÎó¤È¤Ï°ã¤¦¤â¤Î¤Ç¤¹¡£¤½¤·¤Æ¡¢getDataArray ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤÎÇÛÎó¤ÏÇÛÎóÆâ¤ËÇÛÎ󤬯þ¤Ã¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£OOo Basic ¤Ç¤Ï¤³¤ÎÇÛÎó¤ÎÄêµÁÊýË¡¤òÄ󶡤·¤Æ¤¤¤Þ¤»¤ó¡£
¼¡¤Î¤è¤¦¤Ê´¶¤¸¤ËForʬ¤òÆþ¤ì»Ò¤Ë¤¹¤ë¤È¤É¤¦¤Ç¤·¤ç¤¦¤«¡£n = 5 Dim a(3) As Variant Dim b() As Variant For i = 0 To 3 step 1 ReDim b(5) For k = 0 To n step 1 b(k) = i * k Next a(i) = b Next
½ÐÍè¤Þ¤·¤¿¡ª †
mr_happy (2011-05-15 08:23:21 (Æü))
¤Ï¤Ë¤ã? ¤µ¤ó¡¢½ÐÍè¤Þ¤·¤¿¡£¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹¡£
¤³¤Î·Á¤â¤ä¤Ã¤Æ¤ß¤Æ¤Ï¤¤¤¿¤Î¤Ç¤¹¤¬¡¢¤½¤Î»þ¤Ï¤¦¤Þ¤¯¤æ¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
Íýͳ¤¬¤ï¤«¤ê¤Þ¤·¤¿¡£
¾åµ¤ÎÎã¤Ç¸À¤¨¤Ð¡¢a¤Èb¤ÎÊÑ¿ô¤Î·¿¤Ç¡¢Î¾Êý¤È¤âVariant¤Ë¤·¤Æ¤ª¤±¤ÐÂç¾æÉפʤ褦¤Ç¡¢»ä¤Ï¤É¤¦¤ä¤é¤É¤Á¤é¤«¤Þ¤¿¤ÏξÊý¤òObject·¿¤Ë¤·¤Æ¤¤¤¿¤è¤¦¤Ç¤¹¡£
¤³¤³¤Ç´°Î»¤Ë¤·¤Þ¤¹¡ª¡¡¤Þ¤¿²¿¤«¤¢¤Ã¤¿¤é¤ª´ê¤¤¤·¤Þ¤¹¡£
¡Ö»²¾ÈÌäÂê¡×¤È¡¢´°À®¤·¤¿¥Æ¥¹¥ÈÍÑ¥Þ¥¯¥í †
mr_happy (2011-05-17 09:39:15 (²Ð))
vWData()()·¿¤ÎÇÛÎóÊÑ¿ô¤¬Àë¸À¤Ç¤¤º³§¤µ¤ó¤Î¥¢¥É¥Ð¥¤¥¹¤«¤é~
¤È¤ê¤¢¤¨¤º´°À®¤Ë¤·¤Æ¤ª¤¤¤¿¤³¤ÎQA¡¢~
¼Â¤Ï»×¤ï¤Ì¤È¤³¤í¤ËÍî¤È¤··ê¤¬¤¢¤ê¤½¤Î¼è¤êÁȤߤò¤·¤Þ¤·¤¿¡£~
¤½¤ì¤Ï²¼µ¥Þ¥¯¥íÃæ¤Î vWData(y) = f_DrctIn(vXBuf, xMx) ¤ÎÉôʬ¤Ç~
¤â¤È¤â¤È¤Ï¡¡vWData(y) = vXBuf¡¡¤Ç¤·¤¿¤¬¤³¤ì¤À¤È~
vWData(0), vWData(1), vWData(2)¡¦¡¦¡¦¡¦¤Ï¤¹¤Ù¤ÆÆ±¤¸Ê¸»ú¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£~
¤³¤ì¤Ï³ÑÅĤµ¤ó¤¬»ØÅ¦¤·¤Æ¤¤¤¿»²¾ÈÌäÂê¤À¤È¹Í¤¨¡¢°ìö´Ø¿ô¤ËÆþ¤ì¥¯¥ê¥¢¡¼¤·¤Þ¤·¤¿¡£~
´Ø¿ô¤ËÆþ¤ì¤Ê¤¯¤Æ¤âƱ¤¸¤³¤È¤ò¤ä¤ì¤ÐÂç¾æÉפǤ·¤¿¤¬¡¢´Ø¿ô¤ËÆþ¤ì¤ë¤³¤È¤Ç~
vFcBuf ¤¬¤¤¤Ä¤â¿·Á¯¤À¤È¹Í¤¨¤Æ»È¤¤¤Þ¤·¤¿¡£~
¤³¤Î¾ì¤ò¼Ú¤ê¤Æ»²¹Í¤Ë¤µ¤»¤Æ¤¤¤¿¤À¤¤¤¿¤³¤È¤Ë´¶¼Õ¤·¤Þ¤¹¡£~
¤½¤ÎHP http://blog.livedoor.jp/addinbox/
Sub f_TestMain Dim oRSheet, oRRange, oWSheet, oWRange, oWOneDoc Dim vRData(), vWData(), vXBuf() Dim x, y, x1, y1, x2, y2, yMx, xMx oWSheet = ThisComponent.getSheets.getByName("Sheet2") 'oWSheet.getCellRangeByName("A5:G25").clearContents(31) oWOneDoc = oWSheet.getCellRangeByName("C2") oRSheet = ThisComponent.getSheets.getByName("Sheet1") oRRange = oRSheet.getCellRangeByName("A5:G25") vRData = Range.getFormulaArray xMx=UBound(vRData(0)) yMx=UBound(vRData) ReDim vXBuf(xMx) ReDim vWData(yMx) For y = 0 to yMx For x = 0 To xMx vXBuf(x) = vRData(y)(x) Next vWData(y) = f_DrctIn(vXBuf, xMx) Next Call f_GetXY(oWOneDoc, vWData, x1, y1, x2, y2) oWRange = oWSheet.getCellRangeByPosition(x1, y1, x2, y2) oWRange.setFormulaArray(vWData) End Sub Function f_DrctIn(vXBuf, xMx) As Variant Dim vFcBuf vFcBuf = vXBuf ReDim Preserve vFcBuf(0 to xMx) f_DrctIn = vFcBuf End Function Sub f_GetXY(oOneDoc, vMyBUF, x1, y1, x2, y2) Dim oOneAdr oOneAdr = oOneDoc.getRangeAddress() x1 = oOneAdr.StartColumn y1 = oOneAdr.StartRow x2 = Ubound(vMyBUF(0)) + x1 y2 = Ubound(vMyBUF) + y1 End Sub²þ¤á¤Æ¤ß¤Ê¤µ¤ó¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£