システムwiki

MS Excelの形状に基づいて変数を数える

Nimalan 解決済 最終更新日:2021-06-14 11:24

「四角形50」という名前の形状が緑色に着色された場合(RGB(146,208,80)).

DefaultShape(Rectangle 50)色は白です.

ユーザーは形をクリックします(四角形50)

コードチェック、ActiveSheetが最後のシートである場合は、形状の色が緑色に変更され、各シートの緑色の四角形の総数がカウントされ、値が「合計」と呼ばれるシートに表示されます.ActiveSheetがではない場合
最後のシートで、長方形の色のみが変更されます.

私はこのコードをシート1の形を選択しないことによって、sheet2(Sheet2が最後のシートです).

しかし、 "Total"シートに表示されるCATAの値は2です(しかしそれは1でなければなりません).

下のコードを見てください

サブカウント()

Dim CallingsHapename
薄暗いACjpSとしてワークシートとして
ワークシートとして薄暗いLSjpS
ワークシートとして薄暗くする
微小

としての薄暗いカタ

set lstws= sheets(ActiveWorkbook.Worksheets.Count)

CallingShapeName= ActiveSheet.Shapes(application.caller).Name

ACjpS= ActiveSheet

を設定します

actws.name= lstws.nameの場合
cata= 0
ActiveSheet.Shapes( "Rectangle 50").fill.forecolor.rgb= RGB(146,208,80)
ワークシートの各ALSHTについて
alsht.name<>"hello"とalsht.name<>"total"がその後
ActiveSheet.Shapes( "Rectangle 50")の場合.fill.forecolor.rgb= RGB(146,208,80)
Cata= Cata + 1

の場合は終了
の場合は終了 次にALSHT
ワークシート(「合計」)範囲( "H12").値= cata

else

ActiveSheet.Shapes( "矩形50").fill.forecolor.rgb= RGB(146,208,80)

の場合は終わります

終了SUB

返信リスト(回答:5)

5 #
JasleS

私はあなたの問題を複製することができません.
私は2枚のシートを持つブックを作成しました.1つのシート1と合計という名前のもの.
私はSheet1の形をし、それは「長方形50」と名付けられ、白く色付きであなたがそれに供給したコードを割り当てました.形状をクリックすると、コードは形状の色を緑に変えて挿入しました 全シートのセルH12中の1.
あなたのワークブックをonedriveで共有して、ここにリンクを投稿してください.

応答5# ->にスキップ
3 #
Nimalan

こんにちはJason、

以下のようにブックを作成してください.

合計4枚

1.こんにちは

3.シート1

4.シート2

シート1とシート2の灰(四角形50)を挿入します.

上記の投稿から私のコードを貼り付けて、それを形に割り当てます.

次に、Sheet2で入手可能な形状をクリックしてください.

その後、「合計」

の値を確認してください

応答3# ->にスキップ
2 #
JasleS

私は要求されたとおりにしました、そして私はあなたの結果を2に複製することができます2.
これは、コードが同じループ内のSheet1とSheet2の両方を通過し、「四角形50」という名前の形を探しているためです.その名前を持つ2つの形状があるので、1回の時間はCATA変数に追加されますので、2が得られます.

応答2# ->にスキップ
4 #
Nimalan

正しい結果を得るためにコードが変更されるべきですか.

変数cataは、色が緑色のときだけカウントされるべきです.そして、すべてのシートを通してループする必要があります.

応答4# ->にスキップ
1 #
JasleS 1

実際には変更する必要があるのは1つだけでした.
この行を変更する:
ActiveSheet.Shapes( "矩形50")の場合.fill.forecolor.rgb= RGB(146,208,80)
これに:
alsht.shapes( "矩形50")の場合.fill.forecolor.rgb= rgb(146,208,80)