[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートシェイプ』(taka)
ネットで検索し、丸の中に "積" を入れました。
この丸が楕円形なので、"積"に合った 丸い円にするには、どうすればいいですか?
それと円と、"積"をクリアしたいのですが、マクロの記録では、
以下のように出来たのですが、クリア出来ませんでした。
合わせて、宜しくお願い致します。
Sub クリア()
Selection.ClearContents
End Sub
Sub オートシェイプ()
Dim c As Range
If Not TypeName(Selection) = "Range" Then Exit Sub
For Each c In Selection
With c.MergeArea
If c.Address = .Item(1).Address Then
ActiveSheet.Shapes.AddShape(msoShapeOval, .Left, .Top, _
.Width, .Height).Fill.Visible = False
.Characters.Text = "積" ' オートシェイプの中に文字
.Characters.Font.Size = 10 ' フォントサイズを10ポイントに
.HorizontalAlignment = xlHAlignCenter ' 中央揃え
.VerticalAlignment = xlVAlignCenter ' 中央揃え
End If
End With
Next
End Sub
Excel2000 WindowsXP
'===============================================================
Sub オートシェイプ()
Dim vl As Double
Dim vt As Double
Dim vw As Double
Dim vh As Double
Dim c As Range
If TypeName(Selection) = "Range" Then
Set c = Selection
If c.Width > c.Height Then
vl = c.left + c.Width / 2 - c.Height / 2
vt = c.Top
vw = c.Height
vh = c.Height
Else
vl = c.left
vt = c.Top + c.Height / 2 - c.Width / 2
vw = c.Width
vh = c.Width
End If
With ActiveSheet.Ovals.Add(vl, vt, vw, vh)
.Text = "積"
.Font.Size = 10 ' フォントサイズを10ポイントに
.HorizontalAlignment = xlHAlignCenter ' 中央揃え
.VerticalAlignment = xlVAlignCenter ' 中央揃え
End With
End If
End Sub
'==================================================================
Sub クリア()
If TypeName(Selection) = "Oval" Then
Selection.Delete
End If
End Sub
これで試してみてください。
選択したセル範囲に作成できる最大の円を作成し、図形のテキストとして「積」という文字を表示します。 (セル範囲の幅や高さが小さいと円の中の「積」という文字が表示しきれない場合があります)
クリアというプロシジャーは、アクティブシートにある選択されている円を削除します。
ichinose
丸の中の"積"が、右にあって、のぎへんの一部しか見えません。
真ん中に出来ないでしょうか?
クリアは、エラーは、無いのですが、丸も文字も消えてくれません。
宜しくお願い致します。(taka)
>丸の中の"積"が、右にあって、のぎへんの一部しか見えません。 コードは、選択したセル範囲に納まるように円を作成しています。 選択セル範囲の幅や高さが小さいとこのような現象になります。
回避方法としては、
1 選択セルの幅又は、高さを大きくする
2 .Font.Size = 10 を 6ぐらいにする
3 Autoisizeプロパティを使う
'===============================================================
Sub オートシェイプ()
Dim vl As Double
Dim vt As Double
Dim vw As Double
Dim vh As Double
Dim c As Range
If TypeName(Selection) = "Range" Then
Set c = Selection
If c.Width > c.Height Then
vl = c.Left + c.Width / 2 - c.Height / 2
vt = c.Top
vw = c.Height
vh = c.Height
Else
vl = c.Left
vt = c.Top + c.Height / 2 - c.Width / 2
vw = c.Width
vh = c.Width
End If
With ActiveSheet.Ovals.Add(vl, vt, vw, vh)
.Text = "積"
.Font.Size = 8 ' フォントサイズを10ポイントに
.HorizontalAlignment = xlHAlignCenter ' 中央揃え
.VerticalAlignment = xlVAlignCenter ' 中央揃え
.AutoSize = True
End With
End If
End Sub
このどれかで対応してください。
>クリアは、エラーは、無いのですが、丸も文字も消えてくれません。
その円を選択して実行しなければ消えませんよ!! 選択しなくて消したいなら
Sub クリア()
activesheet.ovals.delete
End Sub
これでいけそうですけど、アクティブシートに存在する円が全部削除されます。 仕様の記述があいまいなので、本当はどうしたいのかがはっきりわかりません。
ichinose
もう一つの代替案 テキストボックスと円の二つの図形を描き、グループ化する方法
'===============================================================
Sub オートシェイプ()
Dim vl As Double
Dim vt As Double
Dim vw As Double
Dim vh As Double
Dim c As Range
Dim r As Shape
Dim t As Shape
If TypeName(Selection) = "Range" Then
Set c = Selection
If c.Width > c.Height Then
vl = c.Left + c.Width / 2 - c.Height / 2
vt = c.Top
vw = c.Height
vh = c.Height
Else
vl = c.Left
vt = c.Top + c.Height / 2 - c.Width / 2
vw = c.Width
vh = c.Width
End If
Set r = ActiveSheet.Shapes.AddShape(msoShapeOval, vl, vt, vw, vh)
r.Line.Visible = True
Set t = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, vl, vt, vw, vh)
With t
With .TextFrame
With .Characters
.Text = "積"
.Font.Size = 10
End With
.AutoMargins = False
.MarginLeft = 0
.MarginTop = 0
.MarginBottom = 0
.MarginRight = 0
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
.Fill.Visible = msoFalse
.Line.Visible = False
End With
ActiveSheet.Shapes.Range(Array(t.Name, r.Name)).Group
End If
End Sub
'==================================================================
Sub クリア()
ActiveSheet.GroupObjects.Delete
End Sub
作成される図形のタイプを変えたので、クリアの仕方も変わってきます。
試してみてください。
ichinose@午後から正月準備の買い物だって←時間のかかる買い物大っ嫌い 訂正---2009/12/30 11:57
更に訂正 ---- 2009/12/30 18:12 もう一度訂正-- 2009/12/30 18:25
>作成される図形のタイプを変えたので、クリアの仕方も変わってきます。
ActiveCellの丸と積を消したいのですが、どうすればよいでしょうか?
何度も申し訳ありませんが、宜しくお願い致します。(taka)
>ActiveCellの丸と積を消したいのですが
だったら、これで試してみてください。
'==================================================================
Sub クリア()
Dim gpo As GroupObject
For Each gpo In ActiveSheet.GroupObjects
If Not Application.Intersect(ActiveCell, Range(gpo.TopLeftCell, gpo.BottomRightCell)) Is Nothing Then
gpo.Delete
End If
Next
End Sub
ichinose
本当に有り難うございました。taka
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.