投稿者 snowmansnow  (社会人) 投稿日時 2021/2/23 20:52:49
魔界の仮面弁士様、大変ありがとうございます。
プリザーブを修正してみましたところ、1回目は動くようになりました。

でも、2回目やってみると、「実行時エラー5。プロシジャーの呼び出し、または引数が不正です」
になってしまいます。(下記の場所)
前回教えてもらった、シート上にストロークデータを記載する。をやってみると、st.idが飛んでいます。
何かリフレッシュみたいに、連番に戻す命令があるのでしょうか?
他に何か理由があるのでしょうか?
よろしくお願いします。


修正版
Private Sub CommandButton37_Click()
 Dim myStroke As Object
 Dim c As Variant
     Dim dels() As Long
   
    ReDim dels(0)
 '   MsgBox InkPicture2.ink.strokes.Count
   For Each myStroke In InkPicture2.ink.strokes
    If InkPicture2.ink.strokes(myStroke.id - 1).DrawingAttributes.Color <> 0 Then ・・・ここでエラー
    ReDim Preserve dels(UBound(dels) + 1)
     dels(UBound(dels) - 1) = myStroke.id
 '   MsgBox (UBound(dels)) & "-" & dels(UBound(dels) - 1)
    Else
    End If
 Next
    InkPicture2.AutoRedraw = True
 '   MsgBox (UBound(dels))

   Dim strokesd As IInkStrokeDisp
   
   Dim strokesToDelete As MSINKAUTLib.InkStrokes
  
   Set strokesToDelete = InkPicture2.ink.CreateStrokes()

   For d = (UBound(dels) - 1) To 0 Step -1
 '  Set strokesd = InkPicture2.ink.strokes(dels(d) - 1)
  '  MsgBox d & "=" & dels(d)
  ' InkPicture2.ink.strokes.Remove strokesd
'    InkPicture2.ink.DeleteStroke InkPicture2.ink.strokes(30)
  InkPicture2.ink.DeleteStroke InkPicture2.ink.strokes(dels(d) - 1)
   InkPicture2.AutoRedraw = True
  Next

'インクを足す事はできる・・・
'Dim strokes As MSINKAUTLib.InkStrokes
'Set combinedInk = InkPicture2.ink
'Set strokes = InkPicture3.ink.strokes
'iret = combinedInk.AddStrokesAtRectangle(strokes, strokes.GetBoundingBox())
'Set strokes = InkPicture4.ink.strokes
'iret = combinedInk.AddStrokesAtRectangle(strokes, strokes.GetBoundingBox())
'https://microsoft.public.windows.tabletpc.developer.narkive.com/xeodljDK/rendering-ink-from-multiple-inkpictures-in-the-same-form


InkPicture2.AutoRedraw = True

End Sub