SSブログ

エクセル・ワード・パワーポイント悩み解決 

好きな技術をいろいろと学んでみた。

記事一覧

セルの内容が変わった→Workbook_SheetChangeを使ったら無限ループ・・・。

  • 投稿 2020/01/14
  • VBA
01.png

家計簿をVBAで作っているのですが、日々の支出金額を入力するたびに集計して、合計金額セルを更新する形でした。

まず、
[ひらめき]セルが更新されたイベント
Workbook_SheetChangeを使用。
ワークブック内のシート共有で使うのでブック配下のイベントにしました。

[ひらめき]Workbook_SheetChangeの最後で、配列にいれた集計した結果をセルに入力する。
ここが間違いでした。ここでも”セルの値が変更された”と認識されるので、Workbook_SheetChangeが呼ばれちゃうんです。

[次項有]
結果関数のネスト呼び出しで、無限ループ突入でした。

[決定]改善策
Workbook_SheetChangeが呼ばれた直後、変更されたセルがどのセルかを判定することにしました。
支出を入力するセルであれば、その後のコードを実行するようにします。

まだ最初の月の1月なので再現していませんが、きっと、1月→2月とセルを変更しただけでこの関数が走ってしまいますね。

にほんブログ村 IT技術ブログへ
にほんブログ村








オプションボタンでは縦書きができるのか

  • 投稿 2020/01/14
  • VBA
00.png

プログラミングに直接は関係しないけれど、オプションボタンを使用していて、配置を考えたら縦長のボタンにしたいと思いました。

そこで文字も縦書きにと思ったのですが、なんと縦書きにできない。
ボタン自体を細い縦書きにすると文字も無理やり縦になるけれども、スマートじゃない。

方法を色々と調べてみたのですが、縦書きにするという設定は無いようです。
無理やりですが、プロパティのcaptionに”1文字ずつ改行した文字列を入力”する方法が一番マシかなと思います。

改行を直接caption欄に入力することができないので、テキストエディタなどに入力した改行付文字をコピペしましょう。

ま、なんとかなりそうですが、スマートじゃない!!
01.png





セクション毎に総ページ数をカウントしたい【WORD】

一つの文書内でセクションを区切っている際に、セクション毎に総ページ数をカウントしたい。

例えば、
文書の1~3ページは本文で、4ページ目が付録とした場合、
フッターを「ページ数/総ページ数」としました。
すると、本文のフッターは、1ページは「1/4」、2ページは「2/4」、3ページは「3/4」となってしまいました。

総ページ数が付録も含めた4ページとなっているのです。

でも、本文内のフッターとして、1/3、2/3、3/3としたいのです。


そこで出てきた小技が「Shift+F9」です。フィールドコードの表示/非表示らしい。


本文内のフッター編集で、総ページ数を選択し、Shift+F9を押すと。
NUMPAGESとなっています。これをSECTIONPAGESに変えるとセクション内の総ページ数となり
ます。

これはメニューの"挿入"⇒"フィールド"でも編集することが可能です。


フィールドコード。これがポイントですね。
Copyright © エクセル・ワード・パワーポイント悩み解決  All Rights Reserved.

テキストや画像等すべての転載転用販売を固く禁じます

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。