Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7130 / 13644 ツリー ←次へ | 前へ→

【40680】吹出しの先っぽの位置を変えずに自動サイズ調整してほしい あくたいおん 06/7/20(木) 13:01 質問[未読]
【40708】Re:吹出しの先っぽの位置を変えずに自動サ... ichinose 06/7/20(木) 20:16 発言[未読]
【40709】Re:吹出しの先っぽの位置を変えずに自動サ... bykin 06/7/20(木) 21:13 発言[未読]
【40731】Re:吹出しの先っぽの位置を変えずに自動サ... あくたいおん 06/7/21(金) 16:22 発言[未読]
【40727】Re:吹出しの先っぽの位置を変えずに自動サ... あくたいおん 06/7/21(金) 15:43 発言[未読]
【40734】Re:吹出しの先っぽの位置を変えずに自動サ... ichinose 06/7/21(金) 17:31 発言[未読]
【40740】Re:吹出しの先っぽの位置を変えずに自動サ... bykin 06/7/21(金) 23:36 回答[未読]
【40934】Re:吹出しの先っぽの位置を変えずに自動サ... あくたいおん 06/7/26(水) 15:35 質問[未読]
【40938】Re:吹出しの先っぽの位置を変えずに自動サ... ichinose 06/7/26(水) 16:11 発言[未読]
【40989】Re:吹出しの先っぽの位置を変えずに自動サ... あくたいおん 06/7/27(木) 13:20 質問[未読]
【41019】Re:吹出しの先っぽの位置を変えずに自動サ... ichinose 06/7/27(木) 19:48 発言[未読]
【41026】Re:吹出しの先っぽの位置を変えずに自動サ... bykin 06/7/27(木) 22:11 発言[未読]

【40680】吹出しの先っぽの位置を変えずに自動サイ...
質問  あくたいおん  - 06/7/20(木) 13:01 -

引用なし
パスワード
   吹出しに入れる文字等が複数行に渡ったり、思ったより長い文を打ち込んだりすることがあり、
その際にボックス部分のサイズをミニマムに保つために「自動サイズ調整」を使おうと思ったのですが、
これにするとボックスの左上位置は変わらなくて良いのですが、肝心の吹出しの先がずれてしまって、
どこを指していたのかわからなくなってしまいます。

先っぽの位置を変えずに自動調整する方法は無いでしょうか?
(自動調整でなぜ先の位置も移動するのかの訳もわかっていませんが(^_^;)

【40708】Re:吹出しの先っぽの位置を変えずに自動...
発言  ichinose  - 06/7/20(木) 20:16 -

引用なし
パスワード
   ▼あくたいおん さん:
こんばんは。
新規ブックの標準モジュールに

'====================================================
Sub ふきだし()
  Dim vLeft, vtop, vHeight, vWidth As Long
  Dim txt As String
  Dim svx As Double, svy As Double
  With ActiveCell '位置調整
    vLeft = .Left + .Width + 22
    vtop = .Top - 15
    vHeight = 10
    vWidth = 50
  End With
  With ActiveSheet.Shapes.AddShape(msoShapeLineCallout3, vLeft, vtop, vWidth, vHeight)
    .Fill.ForeColor.RGB = RGB(255, 204, 204)
    With .Line
     .ForeColor.SchemeColor = 20
     .BeginArrowheadStyle = msoArrowheadOval
     .EndArrowheadStyle = msoArrowheadOval
     End With
    DoEvents
    MsgBox "初期位置だよ"
    svx = Round((.Adjustments(1) * .Width + .Left) / 0.75, 0) * 0.75
    svy = Round((.Adjustments(2) * .Height + .Top) / 0.75, 0) * 0.75
    '↑ポイント1は、この上記の式なにやっているか解読してね
    With .TextFrame
     With .Characters
       .Text = ""
       With .Font
        .Name = "MS Pゴシック"
        .Size = 8
        End With
       .Text = "あああああああああああああ" & vbCrLf & _
           "いいいいいいいいいいいいい" & vbCrLf & _
           "うううううううううううううう" & vbCrLf & _
           "ええええええええええええええ"
       End With
     .AutoSize = True
     End With
    .Adjustments(1) = (svx - .Left) / .Width
    .Adjustments(2) = (svy - .Top) / .Height
'    ↑ポイント2は、上記の式で自動サイズ調整後に再設定しています。
    End With
End Sub

確認してみてください

【40709】Re:吹出しの先っぽの位置を変えずに自動...
発言  bykin  - 06/7/20(木) 21:13 -

引用なし
パスワード
   こんばんわ。

http://www.vbalab.net/bbspolicy.html
↑ここの「マルチポストについて」は確認しましたか?

以下引用----------------
もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。
------------------------

よろしゅーに。
ほな。

【40727】Re:吹出しの先っぽの位置を変えずに自動...
発言  あくたいおん  - 06/7/21(金) 15:43 -

引用なし
パスワード
   ▼ichinose さん:
.Adjustments(1)はよく知らなかったのですが、吹出しでは先っぽの位置などの
数値をボックスとの比例で指定するものなんですね。
ichinoseさんのマクロから、
作成したときだけでなく、いつでも自動サイズ調整に対応するため、以下のようなことを考えてみました。

1)生成するとき
  先っぽの位置を、吹出し自身に記憶していてもらう。
2)ボックス内を編集したときに(当然自動サイズ調整で先の位置が変わってしまう)
  記憶しておいた先の位置情報を取り出してその位置に先の場所を修正する。

そして吹出しがセレクトされたときに2)をするようにすればうまくいくかと思っているのですが...(^_^;

とりあえず1)の方はichinoseさんのマクロから、以下微調整を(^_^;


Sub ふきだし()
  Dim vLeft, vtop, vHeight, vWidth As Long
  Dim svx As Double, svy As Double
  With ActiveCell '位置調整
    vLeft = .Left + .Width + 22
    vtop = .Top - 15
    vHeight = 10
    vWidth = 50
  End With
  With ActiveSheet.Shapes.AddShape(msoShapeLineCallout3, vLeft, vtop, vWidth, vHeight)
    svx = Round((.Adjustments(1) * vWidth + vLeft) / 0.75, 0) * 0.75
    svy = Round((.Adjustments(2) * vHeight + vtop) / 0.75, 0) * 0.75
    ' svx = Round((.Adjustments(1) * .Width + .Left) / 0.75, 0) * 0.75
    'svy = Round((.Adjustments(2) * .Height + .Top) / 0.75, 0) * 0.75
    .AlternativeText = svx & ":" & svy

    '.Adjustments1はこのフキダシの場合6種類
    '.Item(1)ボックス位置そのままで先がx方向に移動
    '.Item(2)ボックス位置そのままで先がY方向に移動
    '.Item(3)ボックス位置そのままで引き出し線の折れるポイントがx方向に移動(-1から+1)
    '.Item(4)不明 数値変えても変わらないように見える
    '.Item(5)先位置そのままでボックスがX方向に移動(折れるポイント不動)
    '.Item(6)先位置そのままでボックスがY方向に移動(折れるポイント不動)

    .Fill.ForeColor.RGB = RGB(255, 204, 204)
    With .Line
      .ForeColor.SchemeColor = 20
      .BeginArrowheadStyle = msoArrowheadOval
      .EndArrowheadStyle = msoArrowheadOval
    End With
    With .TextFrame
      With .Characters
        .Text = ""
        With .Font
          .Name = "MS Pゴシック"
          .Size = 8
        End With
        .Text = "@"
      End With
      .AutoSize = True
    End With
    .Adjustments(1) = (svx - .Left) / .Width
    .Adjustments(2) = (svy - .Top) / .Height
    .Select
    SendKeys "> {BS}"
  End With
End Sub

.AlternativeText を使って、覚えさせるというやり方です。
(他に吹き出しが持ってる、ユーザーが勝手にできそうな所を知らないので(^_^;)

問題は、2)の部分で、
まずどうやったら吹出しに書き終わったことを伝えられるのかがよくわかっていないところです。
アドバイスいただけるとありがたいです。

【40731】Re:吹出しの先っぽの位置を変えずに自動...
発言  あくたいおん  - 06/7/21(金) 16:22 -

引用なし
パスワード
   ▼bykin さん:
こんにちは。

私としてはひとつは複数の吹出しの整理について
こちらでは吹出しのテキストボックスの自動生成時の文字編集状態について
と吹出しの自動サイズ調整時について
と別の質問と考えていました。

解決方法が、VBAでの同じ処理を使うことになりそうになっていますが、
結果的にそうなってきたのであって、最初からその部分の処理について質問したかったわけではありません。
そういった意味でマルチポストといわれてビックリ!なのですが、
同じアイテムについての話は同じ質問とみなされるというご注意だと理解しましたので、
今後、重ならないように(ずらして、解決を見てから)質問をしたいと思います。

注意いただき、ありがとうございました。

【40734】Re:吹出しの先っぽの位置を変えずに自動...
発言  ichinose  - 06/7/21(金) 17:31 -

引用なし
パスワード
   ▼あくたいおん さん:
こんにちは。
Sendkeysは、動作が不安定な場合がありますから、
よくよくデバッグを繰り返してください。
Windowsによっても違うかもしれませんよ!!

このサイトで私が大変、お世話になったJuJuさんという方の

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=5831;id=excel

この投稿が私には、強く印象に残っていますし、
私自身も何度かSendkeysではうまく作動しない事例を経験したことがあります。

よって、再度私なら、「Sendkeysではなく、Inputboxやユーザーフォームで
テキストは入力させる」という仕様にするだるだろうなあ
ということをお断りして・・・。

'=====================================================================
Option Explicit
'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'コメントにしてありますが、これ入れるとCPUの占有率が下がる
'=========================================================================
Sub ふきだし()
  Dim vLeft, vtop, vHeight, vWidth As Long
  Dim txt As String
  Dim svx As Double, svy As Double
  With ActiveCell '位置調整
    vLeft = .Left + .Width + 22
    vtop = .Top - 15
    vHeight = 10
    vWidth = 50
  End With
  With ActiveSheet.Shapes.AddShape(msoShapeLineCallout3, vLeft, vtop, vWidth, vHeight)
    .Fill.ForeColor.RGB = RGB(255, 204, 204)
    With .Line
     .ForeColor.SchemeColor = 20
     .BeginArrowheadStyle = msoArrowheadOval
     .EndArrowheadStyle = msoArrowheadOval
     End With
    svx = Round((.Adjustments(1) * .Width + .Left) / 0.75, 0) * 0.75
    svy = Round((.Adjustments(2) * .Height + .Top) / 0.75, 0) * 0.75
    '↑ポイント1は、この上記の式なにやっているか解読してね
    With .TextFrame
     With .Characters
       .Text = ""
       With .Font
        .Name = "MS Pゴシック"
        .Size = 8
        End With
      
       End With
     End With
    .Select
    SendKeys " {BS}"
    On Error Resume Next
    Do While Selection.Name = .Name
     If Err.Number <> 0 Then Exit Do
     DoEvents
     'Sleep 100
'     これのコメントもはずして試してみてください
     Loop
    On Error GoTo 0
    .TextFrame.AutoSize = True
    .Adjustments(1) = (svx - .Left) / .Width
    .Adjustments(2) = (svy - .Top) / .Height
'    ↑ポイント2は、上記の式で自動サイズ調整後に再設定しています。
    End With
End Sub

後は、Autosize=Trueをどこで設定するかも仕様として決めなければなりませんね!!

【40740】Re:吹出しの先っぽの位置を変えずに自動...
回答  bykin  - 06/7/21(金) 23:36 -

引用なし
パスワード
   こんばんわ。

>私としてはひとつは複数の吹出しの整理について
>こちらでは吹出しのテキストボックスの自動生成時の文字編集状態について
>と吹出しの自動サイズ調整時について
>と別の質問と考えていました。

あー、そーいうことでっか。
あんまりご質問が似てたもんで・・・失礼しました。

で、このご質問の件でっけど、

>吹出しがセレクトされたときに2)をするようにすればうまくいくかと

Shapeを操作したときに起動するイベントはないから
やっぱり手作業でマクロを実行させることになるんとちゃうかな?

↓お二人のアイデア拝借して・・・こんな感じ?

Public Sub SetInitialValue()
  Dim s As Shape
  Dim cx As Single
  Dim cy As Single
  
  On Error Resume Next
  For Each s In ActiveSheet.Shapes
    With s
      Select Case .AutoShapeType
        Case msoShapeRectangularCallout To msoShapeLineCallout4BorderandAccentBar
          cx = .Adjustments(1) * .Width + .Left
          cy = .Adjustments(2) * .Height + .Top
          .AlternativeText = cx & "," & cy
          .TextFrame.AutoSize = True
      End Select
    End With
  Next
End Sub

Public Sub SetAllCallout()
  Dim s As Shape
  
  For Each s In ActiveSheet.Shapes
    SetCallout s
  Next
End Sub

Sub SetSelectedCallout()
  Dim s As Object
  
  On Error Resume Next
  Set s = Selection.ShapeRange
  If Err.Number = 0 Then
    SetCallout s
  End If
  Set s = Nothing
End Sub

Private Sub SetCallout(ByRef s As Object)
  Dim cx As Single
  Dim cy As Single
  
  With s
    Select Case .AutoShapeType
      Case msoShapeRectangularCallout To msoShapeLineCallout4BorderandAccentBar
        If .AlternativeText Like "*,*" Then
          cx = CSng(Left$(.AlternativeText, InStr(.AlternativeText, ",") - 1))
          cy = CSng(Mid$(.AlternativeText, InStr(.AlternativeText, ",") + 1))
          .Adjustments(1) = (cx - .Left) / .Width
          .Adjustments(2) = (cy - .Top) / .Height
        End If
    End Select
  End With
End Sub

(使い方)
1.任意の個数の吹き出しをシート上に適当に配置して先端位置を決定し、
  適当な文字列を入力する。
2.SetInitialValueを実行する。
  →自動調整を設定し、先端位置をAlternativeTextに記憶。
3.吹き出しの文字列を変更する。→先端の位置が変化する。
4.特定の吹き出しの先端位置を元に戻す場合は、当該吹き出しを選択してから
  SetSelectedCalloutを実行する。
5.全部の吹き出しを一括修正する場合はSetAllCalloutを実行する。

DPIは考慮したほうがええんやろうけど、これくらいやったらこのままでもええと思います。
試してみてな。
ほな。

【40934】Re:吹出しの先っぽの位置を変えずに自動...
質問  あくたいおん  - 06/7/26(水) 15:35 -

引用なし
パスワード
   ▼bykin さん:
うーん、使ったことの無いコマンドが多くて理解できないところがありますが(^_^;
試してみました。

確かに先っぽは元の位置に戻ります。うれしいです!!
でも、ボックス内で改行などした時には、ボックスのy方向位置まで変わってしまうようです。
これまた疑問です。どうしてボックス側もずれてしまうのでしょう?

bykinさんのも参考に、作成用マクロと直し用マクロにしてみました。
わたしの理解範疇外のものは使わないで作ったので、いろいろ不具合あるかもしれません。
できれば不明なところ
Select Case .AutoShapeType
Case msoShapeRectangularCallout To msoShapeLineCallout4BorderandAccentBar
などの解説をいただけるとうれしいですが...(^_^;

Sub 作成()
Dim vLeft, vtop, vHeight, vWidth As Long
  Dim svx As Double, svy As Double
  With ActiveCell '位置調整
    vHeight = 10
    vWidth = 50
    vLeft = .Left + .Width + 22
    vtop = .Top - 15
  End With
  With ActiveSheet.Shapes.AddShape(msoShapeLineCallout3, vLeft, vtop, vWidth, vHeight)
    svx = Round((.Adjustments(1) * vWidth + vLeft) / 0.75, 0) * 0.75
    svy = Round((.Adjustments(2) * vHeight + vtop) / 0.75, 0) * 0.75
    .AlternativeText = svx & "," & svy

    .Fill.ForeColor.RGB = RGB(255, 204, 204)
    With .Line
      .ForeColor.SchemeColor = 20
      .BeginArrowheadStyle = msoArrowheadOval
      .EndArrowheadStyle = msoArrowheadOval
    End With
    With .TextFrame
      With .Characters
        .Text = ""
        With .Font
          .Name = "MS Pゴシック"
          .Size = 8
        End With
      End With
      .AutoSize = True
    End With
    .Select
    SendKeys "> {BS}"
  End With
End Sub
Sub 修正()
  Dim cx As Single
  Dim cy As Single
    On Error Resume Next
  For Each s In ActiveSheet.Shapes
    With s
      cx = CSng(Left$(.AlternativeText, InStr(.AlternativeText, ",") - 1))
      cy = CSng(Mid$(.AlternativeText, InStr(.AlternativeText, ",") + 1))
      .Adjustments(1) = (cx - .Left) / .Width
      .Adjustments(2) = (cy - .Top) / .Height
    End With
  Next
End Sub

【40938】Re:吹出しの先っぽの位置を変えずに自動...
発言  ichinose  - 06/7/26(水) 16:11 -

引用なし
パスワード
   こんにちは。
私のは試して頂きましたか?

位置を確保するにはAdjustmentsすべてを再設定してみては?


Option Explicit
'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'コメントにしてありますが、これ入れるとCPUの占有率が下がる
'=========================================================================
Sub ふきだし()
  Dim vLeft, vtop, vHeight, vWidth As Long
  Dim txt As String
  Dim svx(1 To 3) As Double, svy(1 To 3) As Double
  Dim svl As Double, svt As Double
  With ActiveCell '位置調整
    vLeft = .Left + .Width + 22
    vtop = .Top - 15
    vHeight = 10
    vWidth = 50
  End With
  With ActiveSheet.Shapes.AddShape(msoShapeLineCallout3, vLeft, vtop, vWidth, vHeight)
    .Fill.ForeColor.RGB = RGB(255, 204, 204)
    With .Line
     .ForeColor.SchemeColor = 20
     .BeginArrowheadStyle = msoArrowheadOval
     .EndArrowheadStyle = msoArrowheadOval
     End With
    svx(1) = Round((.Adjustments(1) * .Width + .Left) / 0.75, 0) * 0.75
    svy(1) = Round((.Adjustments(2) * .Height + .Top) / 0.75, 0) * 0.75
    svx(2) = Round((.Adjustments(3) * .Width + .Left) / 0.75, 0) * 0.75
    svy(2) = Round((.Adjustments(4) * .Height + .Top) / 0.75, 0) * 0.75
    svx(3) = Round((.Adjustments(5) * .Width + .Left) / 0.75, 0) * 0.75
    svy(3) = Round((.Adjustments(6) * .Height + .Top) / 0.75, 0) * 0.75
'取り急ぎ記述しましたが↑は、ループでまとめられると思います。
    '↑ポイント1は、この上記の式なにやっているか解読してね
    svl = .Left
    svt = .Top
    With .TextFrame
     With .Characters
       .Text = ""
       With .Font
        .Name = "MS Pゴシック"
        .Size = 8
        End With
   
       End With
     End With
    .Select
    SendKeys " {BS}"
    On Error Resume Next
    Do While Selection.Name = .Name
     If Err.Number <> 0 Then Exit Do
     DoEvents
     'Sleep 100
'     これのコメントもはずして試してみてください
     Loop
    On Error GoTo 0
    .TextFrame.AutoSize = True
    DoEvents
    .Adjustments(1) = (svx(1) - .Left) / .Width
    .Adjustments(2) = (svy(1) - .Top) / .Height
    .Adjustments(3) = (svx(2) - .Left) / .Width
    .Adjustments(4) = (svy(2) - .Top) / .Height
    .Adjustments(5) = (svx(3) - .Left) / .Width
    .Adjustments(6) = (svy(3) - .Top) / .Height
'    ↑ポイント2は、上記の式で自動サイズ調整後に再設定しています。
    End With
End Sub


尚、これの使用方法は、実行後、文字入力したのち、セルを選択すれば
吹き出し位置の再設定が行われます。

【40989】Re:吹出しの先っぽの位置を変えずに自動...
質問  あくたいおん  - 06/7/27(木) 13:20 -

引用なし
パスワード
   ▼ichinose さん:
>こんにちは。
>私のは試して頂きましたか?
もちろんです!
その後わたしなりに作り直してみました(^_^;

今回
いただいたマクロですが、
すっごくうまくできてます。ほぼ思い通りです!
でも、
なぜこんな動きになっているのかわからない部分があります。
教えていただけるとうれしいのですが...。

>    On Error Resume Next
>    Do While Selection.Name = .Name
>     If Err.Number <> 0 Then Exit Do
>     DoEvents
>     'Sleep 100
>'     これのコメントもはずして試してみてください
>     Loop
>    On Error GoTo 0
>    .TextFrame.AutoSize = True
>    DoEvents

DoEventsでキーボード入力させ、その後閉じてから位置修正していることはよくわかりました。アイデアですね(^_^)


・不思議なのは、Alternativetextに書き込んだ文字が入っていること。
(どこにもAlternativetextの文字が無いのに!)
 もうメモる必要が無いのですか?
・上記のDoEventsの際に.Nameが使われていること。
 なぜ.Nameなのでしょう? .Nameは、AutoShape(33)とかのはずで、これは文字をかいてるうちには変化しないはず。


よろしくお願いいたします。

【41019】Re:吹出しの先っぽの位置を変えずに自動...
発言  ichinose  - 06/7/27(木) 19:48 -

引用なし
パスワード
   ▼あくたいおん さん:
こんばんは。

>でも、
>なぜこんな動きになっているのかわからない部分があります。
>教えていただけるとうれしいのですが...。
>
>>    On Error Resume Next
>>    Do While Selection.Name = .Name
>>     If Err.Number <> 0 Then Exit Do
>>     DoEvents
>>     'Sleep 100
>>'     これのコメントもはずして試してみてください
>>     Loop
>>    On Error GoTo 0
>>    .TextFrame.AutoSize = True
>>    DoEvents
>
>DoEventsでキーボード入力させ、その後閉じてから位置修正していることはよくわかりました。アイデアですね(^_^)
Doeventsで入力させ というより、これで監視しています。

>
>
>・不思議なのは、Alternativetextに書き込んだ文字が入っていること。
>(どこにもAlternativetextの文字が無いのに!)
これは、仕様みたいですよ!!手動でふき出しを作成し、文字を入力しても
Alternativetextには、文字が入っています。
気になるなら 最後に

.AlternativeText = ""

なんて入れとけば良いです。

> もうメモる必要が無いのですか?
私の投稿したコードでは要りません!!


>・上記のDoEventsの際に.Nameが使われていること。
> なぜ.Nameなのでしょう? .Nameは、AutoShape(33)とかのはずで、これは文字をかいてるうちには変化しないはず。
ん?疑問に思っていることがよくわかりませんが・・・。

オートシェイプの名前はふき出しを作成するたびにユニークな名前が付けられます。
固定の名前などコードに記述するわけにはいきません。
いや、仮に固定の名前だとしても"kotei1"なんて、
書くべきではありません。
固定名が仕様で変わったら、コードを変更しなければなりませんので・・・。

コードの意味はおわかりですか?

作成したオートシェイプをSendkeysを記述している上のほうで

.Select しています。


作成したオートシェイプの名前(.Name)と
選択されているオブジェクト(Selection)の名前(Selection.Name)が
同じ間は待機しているというコードです。

例えば、文字入力が終了し、適当なセルを選択すれば、
Selectionは、選択したセルを取得します。
すると、オートシェイプの名前と選択したオブジェクト(Selection)の名前が違うので
ループ処理から抜ける という仕組みです
(実際には、セル(Range)にNameというプロパティがないので
エラートラップによってループを抜けていますが・・・)。

【41026】Re:吹出しの先っぽの位置を変えずに自動...
発言  bykin  - 06/7/27(木) 22:11 -

引用なし
パスワード
   こんばんわ。

>ボックス内で改行などした時には、ボックスのy方向位置まで変わってしまうようです。
>これまた疑問です。どうしてボックス側もずれてしまうのでしょう?

四角形吹き出しや雲形吹き出しなら問題ないけど、線吹き出しでは若干ずれるみたいやね。
これはもう仕様ってことなんやろねー(わけわからん(^^;;)

>Select Case .AutoShapeType
>Case msoShapeRectangularCallout To msoShapeLineCallout4BorderandAccentBar
>などの解説を

msoShapeRectangularCallout = 105
msoShapeLineCallout4BorderandAccentBar = 124

というOfficeで規定されてる定数です。
Select Case .AutoShapeType
  Case 105 To 124
と同じってことです。
四角形吹き出しのAutoShapeTypeは105で、
強調線吹き出し4(枠つき)のAutoShapeTypeは124。
その他の吹き出しはこれらの数値の間に含まれるから、範囲指定することで
吹き出しだけを対象にしてるんですわ。

そーゆーことで・・・
ほな。

7130 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free