[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オートシェイプで作った個数を数える』(taka)
昨日、オートシェイプで丸の中に積を入れるマクロを
ichinoseさんに教えてもらいました。
このオートシェイプで作った丸の中に積が、入った個数を数えたいのですが、
わからないので教えて下さい。
AH=COUNTIF(B4:AF4,"???")&"個"
Excel2000 WindowsXP
関連スレッド [[20091229141336]] 『オートシェイプ』(taka)
オートシェイプを描いたときに セルの文字色を白にして セルに「積」の文字を入れる。 シェイプを消すときは、セルの文字も消す。 事にすれば、COUNTIF関数で 数えられるようになりそうに思います。
(HANA)
>シェイプを消すときは、セルの文字も消す。
ここが、よくわからないので教えて頂けないでしょうか?
宜しくお願い致します。taka
何が分からないのか良く分かりません。。。
アクティブセルの文字や書式は ActiveCell.Clear で消えますが?
(HANA)
やってみます。taka
↑これの修正もあるので・・・Countifを使う方法とは違う方法で・・。
標準モジュールに
'=============================================================== 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 + 0.75 vt = c.Top + 0.75 vw = c.Height - 1.5 vh = c.Height - 1.5 Else vl = c.Left + 0.75 vt = c.Top + c.Height / 2 - c.Width / 2 + 0.75 vw = c.Width - 1.5 vh = c.Width - 1.5 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 ActiveSheet.Calculate End If End Sub
'==================================================================
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 ActiveSheet.Calculate End If Next End Sub '==================================================================== Function 積Count() 積Count = Application.Caller.Parent.GroupObjects.Count End Function
積の数を出したいセルに
=積Count()
と指定します。
積と円の図形を作成すれば、カウントアップし、削除すればカウントダウンします。 (但し、提示したマクロを使って作成、削除を行うこと)
修正箇所は、積と円の図形を若干小さくしました。 (計算上、セルにぴったり合わせると、上下左右の隣接するセルに作成された図形も削除してしまう 可能性もあるので)
ichinose
>積の数を出したいセルに
=積Count()をいれましたら、#NAME?になりました。
”個”も付け加えたいと思います。宜しくお願い致します。taka
> =積Count()をいれましたら、#NAME?になりました。
Function 積Count() 積Count = Application.Caller.Parent.GroupObjects.Count End Function を標準モジュールに記述していますか?
> ”個”も付け加えたい
=積Count()&"個" とするか、セルの書式設定で設定すればいいかと思います。
(とおりすがり)
オートシェイプのSheetに記述していました。
個も無事に付きました。
有り難うございました。
ichinoseさん 本当にお世話になりました。
有り難うございました。
taka
>積の数を出したいセルに =積Count()&"個"
範囲指定したいのですが、
積の数を出したいセルに (B4:AF4)&"個" の合計
積の数を出したいセルに (B7:AF7)&"個" の合計
・ ・
・ ・
・ ・
何度も申し訳ありませんが、宜しくお願い致します。 taka
>>積の数を出したいセルに =積Count()&"個" > > 範囲指定したいのですが、 > 積の数を出したいセルに (B4:AF4)&"個" の合計
以下のような感じにするといかがですか?
Function 積Count(rng As Range) Dim gpo As GroupObject
積Count = 0 For Each gpo In Application.Caller.Parent.GroupObjects If Not Application.Intersect(rng, Range(gpo.TopLeftCell, gpo.BottomRightCell)) Is Nothing Then 積Count = 積Count + 1 End If Next End Function
(VBAメンテ担当)
有り難うございます。
仕事の能率もあがり、出社する足取りが軽くなります。
皆様、本当に有り難うございました。taka
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.