[[20151126071312]] 『選択したセルにオートシェイプを表示させるには?』(AI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『選択したセルにオートシェイプを表示させるには?』(AI)

現在、ユーザーフォームのコマンドボタンを押したら指定場所にオートシェイプが表示されますが、これを、クリックした場所付近に表示されるように変更したいのですが、コードがわかりません。よろしくご教授下さい。

現在のコードです。

 Private Sub CommandButton3_Click()

With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 270 * 3, 450 * 3, 400, 40)

 .TextFrame2.TextRange.Text = "取り付け確認"
 .TextFrame2.TextRange.Font.Size = 32
 .TextFrame2.TextRange.Font.Name = "MS P明朝"
 .TextFrame2.TextRange.Font.Bold = True
 .TextFrame.HorizontalAlignment = xlHAlignCenter
 .TextFrame.VerticalAlignment = xlVAlignCenter
 .Fill.ForeColor.RGB = RGB(204, 0, 0)
 .Line.ForeColor.RGB = RGB(0, 0, 0)
 .Fill.Transparency = 0.1
  Font.Bold = True

  End With

  End Sub

 表示させる条件として、縦のセル幅は50ポイントで、横のセル幅は幅が狭いので幅に関係なく、文字数で幅を自動変更したいです。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 いったん、要件確認のための質問をアップしましたが、質問そのものを変更します。
 希望要件がいまいちわからないので、

 With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 270 * 3, 450 * 3, 400, 40)

 これを

 With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, ActiveCell.Left, ActiveCell.Top, 400, 40)

 に変更して実行してできあがるシェープと、要望しているものとの差を【具体的に】教えてください。

 コードではどうなるかは明確ですから、(AI)さんが、どうしたかったか、それとの差がどうだということを
 (操作の順番も含めて)具体的に教えてください。

 (選択したセル付近に挿入したいのにそうならないといった回答ではなく、具体的に)

(β) 2015/11/26(木) 08:05



β様

早々のご教授、ありがとうございます。

ご教示通り、変更して実行しました。要望している通りに
なっています。

今までは、表に大きくインフォメーション的な感じで1か所に大きく
表示させていましたが、

今後やろうとしている操作順ですが、ユーザーフォームにボタンを10個
作り、表示させたいセルをクリックした後に、ユーザーフォームのボタン
を押したら文字入りのオートシェイプが出来る。です。

最初の With ActiveSheet部分をActiveCellに変更しただけではダメだったので
質問させて頂きました。

でも、これで、うまくいきそうです。10個のボタンの文字数も1文字があったり6文字があったりと
まちまちなので、それぞれの文字数で設定ができるので、これで大丈夫です。

 >(選択したセル付近に挿入したいのにそうならないといった回答ではなく、具体的に)
    曖昧な書き方で申し訳ありません。6文字のオートシェイプなら、クリックしたセルを中心に
  くるようにはできますか?
(AI) 2015/11/26(木) 09:51

 選択したセルの中心にシェープの中心をあわせるサンプルです。
 シェープの大きさ調整については要件がいまいちわからないので、大きさはそのままにしてあります。

 Sub Sample()
    Dim c As Range

    Set c = ActiveCell

    With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 0, 0, 400, 40)
        With .TextFrame2.TextRange
            .Text = "取り付け確認"
            .Font.Size = 32
            .Font.Name = "MS P明朝"
            .Font.Bold = True
        End With
        .TextFrame.HorizontalAlignment = xlHAlignCenter
        .TextFrame.VerticalAlignment = xlVAlignCenter
        .Fill.ForeColor.RGB = RGB(204, 0, 0)
        .Line.ForeColor.RGB = RGB(0, 0, 0)
        .Fill.Transparency = 0.1

        'Font.Bold = True   'この意味がわからないのでとりあえずコメントアウト

        .Left = c.Left + c.Width / 2 - .Width / 2
        .Top = c.Top + c.Height / 2 - .Height / 2

    End With

 End Sub

(β) 2015/11/26(木) 11:02



β様

有難うございました。
勉強になりました。
(AI) 2015/11/26(木) 16:31


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.