Home

ChaBlog

| Next»

改造!Excel 取引管理

  • 2008-07-27 (Sun)
  • web
これまで作ってきた「Excelで取引管理」を見てみると、会員の個別シートがあるので40を超えるシート数となっています。

これを取引のあった会員シートだけを作るようにして、できるだけ見やすくてコンパクトなものにしてみました。

まずは合計表に打ち込む各取引データーから必要な会員番号を抜き取り、新たに作ったベースとなる基本シートを通して取引のあった会員の個別シートを作っていきます。

次にその個別シートのデータから、集計表、手数料表に会員別取引実績を入れ込んでいきます。

最後に、出来上がった集計表と個別シートを印刷。

これで最初のシート数は会員名簿、合計表、集計表、手数料表、基本シートの5個になりました。
かなりスッキリしました♪
(注:Excel2003で作成)

シート保護とオートフィルター

  • 2008-06-19 (Thu)
  • web
またまたEXCEL関連で。
作成した集計マクロで、シート保護をしたシートのオートフィルターができないことが判明。

対処法をいろいろ検索して調べてみてActiveSheet.Unprotect 、Protect で保護を解除、設定する方法や、EnableAutoFilter、AllowFiltering など試してみましたがエラーばっかりでなかなかうまくいきませんでした。

根気よく調べてみると、オートフィルターの使える状態でシート保護はできているけど、マクロを使ってのオートフィルター操作ができないことが判明。
そこでUserInterfaceOnly にTrue を指定してマクロからの操作ができるようにしました。
この設定は一度してしまえばそれでOKかと思っていたら、有効なのはブックを閉じるまでの間だけだったので、この設定自体
Set sheet1 = Worksheets("手数料表")
sheet1.Protect Password:="*****", AllowFiltering:=True, _
UserInterfaceOnly:=True
として直接集計マクロに書き加えました。

これでようやく解決しました。
(注:Excel2003で作成)

EXCEL マクロ.5

  • 2008-06-18 (Wed)
  • web
今回作ったマクロのおかげで作業的にはかなり簡素化されました。

あとは入力セルを間違ったり、間違って数式を消したりというミスが出ないようにできないのか、またまた検索。
そこで見つけたのが「シートの保護」、いろいろ調べて早速設定しました。

まずは数値入力セル、日付入力セルを選択し、[セルの書式設定][保護]で[ロック]を解除。
ついでに数式の組み込んであるセルの、数式バーに収まらないぐらい長々と入れ込んだ数式が表示されないように、[セルの書式設定][保護]で[表示しない]にチェック。

この作業は、作業グループで各会員シートをまとめて行ったのですぐ済んだのですが、肝心なシートの保護が作業グループではできません。
各会員シートをひとつひとつ設定するのは面倒なので、マクロでパスワードを付けてシート保護することに
Sub シート保護()
'変数の宣言
Dim r As Range
Dim MySheetName As String

MySheetName = ActiveSheet.Name
For Each r In Selection

Sheets(CStr(r)).Select
ActiveSheet.Protect Password:="*****"
Next

Sheets(MySheetName).Select
End Sub

手数料表の会員番号欄を選択して実行。
アッという間に終了。
マクロってやっぱり便利ですね(^.^)
(注:Excel2003で作成)

EXCEL マクロ.4

  • 2008-06-16 (Mon)
  • web
前回までのエントリーを書きながら調べ直してみると、今まで繋がらなかったパーツをうまくまとめられそうなヒントを発見!

それは、最初のマクロで抽出した会員番号をそのまま選択範囲として、その値の会員シート番号を印刷するシート名として取り込むかたちにすることです。
Range("F2:F38").SpecialCells(xlCellTypeVisible).Select
For Each r In Selection
Sheets(CStr(r)).Select
ActiveWindow.SelectedSheets.PrintOut
Next
EXCEL マクロ.3で作ったマクロの前半に自動記録のマクロを入れ込み、オートフィルターの抽出範囲のうち印刷に必要な会員番号の部分Range("F2:F38")の可視セルを Select して後半のマクロに渡すようにしました。

これで2つのマクロを1つにまとめることができました。
実際に検証してみても OKです!

あと、合計表に順次登録した取引全てを選択範囲にできるように、始まりのCells(4, 2)から最終行の12列目Cells(e, 12)を選択する
e = Cells(4, 2).End(xlDown).Row
Range(Cells(4, 2), Cells(e, 12)).Select
を追加。
最後に、ツールバーにボタンを挿入してマクロ登録。

さあこれで取引入力を終えたら、ボタン一つで OK! です。
これで今までの煩わしいシートの移動、印刷の繰り返し作業から開放されます。

ようやく希望通りのマクロを作ることができました。
満足♪
(注:Excel2003で作成)

EXCEL マクロ.3

  • 2008-06-15 (Sun)
  • web
マクロ(VBA)を作る!
といっても、今まで勉強したことがないので全然わかりません(笑)

ということで、例によって検索学習!

知りたいことはマクロの自動記録でできなかった
1.オートフィルターで抽出したセルの選択
2.選択したセルと会員シートとの関連付け
3.会員シートの印刷
4.上の作業を順番に繰り返すこと
です。

いつものことですが、検索していろいろなサイトを見ても基礎知識すらないのでぜんぜん解りません。
HTMLやCSSのときもそうでしたが、VBAのコードも始めてみたときは暗号としか思えませんでした(笑)

それでもあきらめずに上の4項目を頭に入れて調べていくと、コードの意味がなんとなく解ってきました。
でもコードを書いて検証してみると動かなかったり、エラーが出たり…なかなかつながっていきません。
特に処理に困ったのが、
1.の抽出した可視セルの取り込み
2.3.の印刷する各シートのシート名での呼び出し
でした。

続きを読む…

EXCEL マクロ.2

  • 2008-06-15 (Sun)
  • web
前回の実験で、マクロの便利さはしっかり解りました。
しかし、マクロの自動記録だけでは無理なのも解りました。

問題点は、手数料表のオートフィルターで抽出した会員のシート(取引明細書)を個別に印刷する作業です。

それまでの手動での操作としては、集計表で取引計上された会員の個別シートに、集計表からリンクで移動してそのページを印刷し、また集計表へのリンクで戻るという手順でした。
(これを取引計上された会員数分、何回も繰り返します)

しかしこれでは会員の選択ができないと思ったので、手数料表にリンクを作ってみたのですが結果は同じでした。

結局、自分でマクロを作らなければ駄目だということでした(^^;

EXCEL マクロ.1

  • 2008-06-14 (Sat)
  • web
2,3日前、本屋さんでExcel の解説書を流し読みしていると
「同じ作業を繰り返し実行する場合、マクロを使うと作業を自動化することができます。」
「マクロの自動記録とは、Excelの操作手順をそのままマクロとして記録(作成)できる機能です。」
というような解説を発見!

早速 EXCELで取引管理で実験です。

まず架空の取引を何組か入力し、自動記録させる作業を頭の中で確認。
1.入力した各取引の並べ替え
2.集計表の印刷
3.手数料表のオートフィルターで取引のあった会員の抽出
4.各会員の取引明細書の印刷
ここまでの一連の操作を記録してみました。

さて、マクロの自動記録の検証です。
同じように架空の取引を何組か入力し、記録したマクロを選択!

おお!アッという間に集計表と各会員の明細書が印刷されていきます。

あれ、でもちょっと変です??
取引入力した会員以外の会員の明細書が印刷されています。
よく見てみると、自動記録したマクロではそのとき選択した会員のみに限定されていたのです。
| Next»

More...

Home

Search
Links
Feeds

Page Top