* setDataArrayでセルに書き込んだ文字が見えない! [#wfd52ac2]
 |RIGHT:|LEFT:|c
 |~ページ|[[OpenOffice.org FAQの登録ページ]]|
 |~投稿者|mr_happy|
 |~分類|#listbox3(Q&A,faq03,class)|
 |~優先順位|#listbox3(普通,faq03,priority)|
 |~状態|#listbox3(完了,faq03,state)|
 |~カテゴリー|#listbox3(Calc 表計算,faq03,category)|
 |~投稿日|2011-05-01 14:35:32 (日)|
 |~OS|Win7|
 |~依存するページ|fqa 6/238|
 |~バージョン|#listbox3(3.3.2,faq03,version)|
 
 //////////バグ対策(以降マッチさせない)
 
 ** メッセージ [#fe075c3a]
 |LEFT:|c
 |回答ページでは行末に「~」を付加する必要はありません|
 こんにちは、お世話になります。
 部分的ですが、下記のようにしてセルに一括して書き込みをする作業を研究中です。
  Dim x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer
  Dim vnBf(4), mm(4)
 
     For nSno=1 To 5
         For nKtnNo=1 To 5
             mm(nKtnNo-1)=cnKei(nKtnNo, nSno)
         Next
         vnBf(nSno-1) = Array(mm(0),mm(1),mm(2),mm(3),mm(4))          
     Next
     x1=57:     y1=9   
     x2 = Ubound(vnBf(0)) + x1
     y2 = Ubound(vnBf)    + y1  
     oSht=ThisComponent.Sheets(1)
     oSht.getCellRangeByPosition(x1,y1,x2,y2).setDataArray(vnBf) 
 これで動作は目的道理行われるのですが、シートを見ると何も書き込まれていません!。
 いや、書き込まれているようなのですが、見えません。
 
 この意味は、マウスをセル上に持ってゆくと、
 数式入力欄には書き込まれた数字が表れます。
 しかし、セルには無いのです。
 
 書き込まれたと思われる部分をスクロールし、
 一度隠してから
 再び戻すと見える=書き込まれているのです。
 
 更に、セルに現れた数字を消そうとしても(DEL,クリアなど)消えません!
 結局、行を削除して消し、テストを続けています。
 
 なぜこんなことが起こるのでしょうか?
 お分かりの方がおりましたら、ご教授ください。お願いします。
 
 ----
 ***画面更新? [#m5f858dc]
 >M.Kamataki (2011-05-02 20:32:14 (月))~
 ~
 マクロの実行速度を上げるために画面更新をロックしていませんか? 以下のページを参考にしてください。~
 ~
 コントローラのロック~
 http://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FGeneric%2FlockControllers~
 
 //
 ***ロックはされてないようですが [#hf2e214f]
 >mr_happy (2011-05-03 08:29:35 (火))~
 ~
 ありがとうございます。~~
 以下で調べてみましたが、結果は「FALSE」となり、ロックはされてないようです。~
  Sub LockChk
   Dim oDoc
   oDoc = ThisComponent
   If oDoc.hasControllersLocked =TRUE then
      msgbox "TRUE"
   else: msgbox "FALSE"
   End If   
  End Sub
 次のでもいいのでしたね
  Sub LockChk
   Dim oDoc
   oDoc = ThisComponent
   msgbox oDoc.hasControllersLocked
  End Sub
 //
 ***LockChkではいつもFALSEになる?! [#ea373f38]
 >mr_happy (2011-06-05 16:05:00 (日))~
 ~
 こんにちは。fqa 6/238 を見て自分のは変だなぁ、もう一度と思いながら~
 次のことをしてみました。下記のマクロで~~
 lockBook   → LockChk ・・・MsgBoxは TRUE →  FALSE とメッセージ~~
 UnlockBook → LockChk ・・・MsgBoxは FALSE →  FALSE とメッセージ~~
 ~
 この結果、ロックされていてもいなくてもLockChkではFALSEになるということでした。どこがまずいのでしょうか。宜しくご教示のほどを。~
  Sub LockChk
   Dim oDoc
   oDoc = ThisComponent
   msgbox oDoc.hasControllersLocked
  End Sub
  
  Sub lockBook
   Dim oDoc 
   oDoc = ThisComponent
   oDoc.lockControllers()
   msgbox oDoc.hasControllersLocked
  End Sub
  
  Sub UnlockBook
   Dim oDoc 
   oDoc = ThisComponent
   oDoc.unlockControllers()
   msgbox oDoc.hasControllersLocked
  End Sub
 
 //
 ***LibreOfficeの不具合っぽいですね [#i9df7c71]
 >M.Kamataki (2011-06-05 16:59:29 (日))~
 ~
 mr_happyさんがお使いのものは、「3.3.2」ということなので、LibreOfficeですよね。確かにLibreOfficeでは、動作がおかしいようです。LibreOfficeの不具合・要望データベースであるBugZillaに以下の登録がありました。~
 ~
 calc: Basic scripts do not redraw table when macros are working~
 https://bugs.freedesktop.org/show_bug.cgi?id=34655~
 ~
 この不具合が直るまで、lockControllers は使わないほうが良いかもしれません。一方、addActionLock は機能するようです。~
 ~
 なお、OpenOffice.org 3.3.0では不具合はないようです。~
 
 //
 ***再現しません [#s6b4e7b6]
 >ike@九州 (2011-06-06 08:56:29 (月))~
 ~
  Sub Test
   lockBook   'true
   LockChk    'true
   UnlockBook 'false
   LockChk    'false
  End Sub
 Win7 64bit LibreOffice3.3.2~
 こちらでは再現しません。~
 
 //
 ***3.4をインストールで解消 [#b7fe0981]
 >mr_happy (2011-06-06 16:02:51 (月))~
 ~
 M.Kamataki さん、ike@九州さんありがとうございます。~
 3.4をインストールで解消できました。~
 ~
 ただ、3.3をアンインストールしたとき、ちらりと見えたバージョン番号~~
 確か3.3.202だったような気がします。~~
 ike@九州さんのは「Win7 64bit LibreOffice3.3.2」の後の番号もあるのでしょうか? 例えば3.3.208とか???~
 ~
 一応完了にしておきます。~
 
 //
 ***舌足らずでした [#sefe1011]
 >mr_happy (2011-06-06 16:09:09 (月))~
 ~
 「3.4をインストールで解消できました」は、もともとの問題「見えない」のことではなくロックのTRUE,FALSEの事です。~
 「見えない」件は保留でなければならなかったのでした。つまりまだテストはしていませんので。~~
 なので、完了は保留します。~
 
 //
 ***今確認! [#n4f8447a]
 >mr_happy (2011-06-06 17:21:08 (月))~
 ~
 Vr3.4.0で今、確認しました。~
 ロックされていると「見えない」が再現されました。~
 もちろんアンロックなら「見える」状態です。~
 皆さん、ありがとうございました。これで完了です。~
 
 //
 #article