タグ: Excel
皆さん、こんにちは。 QA通信編集員です。
いやぁ、ホント寒いですねぇ。 まぁ、すでに関東近郊に出てきてからの方が
さて、本日は、CSVファイルの文字コード判定して、
以前、このブログの中で、UTF-8形式のCSVファイルをダブルクリックして開くと、 (興味のある方は、こちらから)
...が、このひと手間が面倒に感じることもありますよね?
というのも、とあるシステムから出力されるCSVファイルが、
品質管理を行うときに、 これらのシステムの多くが海外のモノなので、 まぁ、当然と言えば、当然ですけどね...
するってーと、
...ということで、 そのひと手間を減らすことが出来れば良いなぁ...と考えたりする訳です。
そこで、Excelのマクロ機能を使って、
で、ネット上で、 ...と、ググってみると...、 次のようなコードを見つけることが出来ると思います。
簡単に説明すると… 対象となっているファイルを、HTMLファイルとしてオープンして、
HKEY_CLASSES_ROOT\MIME\Database\Charset
まぁ、どんな文字コードがあるのかというのは、
もちろん、この方法でも、大抵の場合は、うまくいきますので、 ただ、この方法は、Internet Explorerなどのブラウザでファイルを開いたときと同様に、 具体的には、 「あれっ、正しく認識してくれないや」と思ったら、
オススメの方法としては、 ...が、さすがに、別プログラムのソースコードから まぁ、そこまで手間をかけるのも大変だという方には、
NonSoft - 文字コード判定のサンプル(VB6) http://homepage2.nifty.com/nonnon/SoftSample/SampleModJUDG.html
こちらのサンプルコードでは、
また、精度としても、かなり高いと思います。 ボクが使っている範囲だけですけど、 ...しかし、このサイトのように、有用な情報を出して貰えると、
...とまぁ、今回は、他人のコードでのお話をしてしまいましたが、
あっ、そうそう、文字コード判定だけしても、 ...ということで、最後に、
ここでは、ファイルに上書きをしてしまっていますが、
大事なことを忘れていたので、追記しておきます。
サンプルのコードの中で、ADODB.Streamを利用して、 いくつかバージョンもありますので、
では。
|
|||||||||
| コメント | 0 | ヒット: 885 |
皆さん、こんにちは。 QA通信編集員です。
なんか今日は朝からバタバタし続けていました。
最近、Excelのネタをポロポロと出していますが、とある人から『そんなにネタ出しして大丈夫なの?』と言われました。
ボクは、仕事柄色んな会社で、色んなネタをぶちまけています。 もちろん、仕事が無くなる可能性はゼロではありませんが、全然心配していません。 ボクには、まだまだ覚えなきゃいけないことや興味のあることなんてたくさんあります。そんな中で、ちょろっとネタを出したところで、何の問題もないんです。 だって、誰かが、そのネタを覚えて、本当に使いこなして、身に付くのはちょっと先の話であり、そのちょっと先のころには、ボクはちょっとだけ新しいことを覚えているハズ(?)なので、その誰かよりは、ちょっとだけ先に進んで、更に新しいことをネタとして話すことが出来ているからなんです。
なので、これからもどんどんネタをぶちまけていこうと思いますので、リクエストとかあれば、是非、聞かせて下さいね。(リクエストは、こちらから)
さて、今日も、またしてもExcelネタです。最近作ったマクロの中で、問題になったことを書きたいと思います。 えー、以前、以下のようなコードでファイルを保存する(今回は、CSVファイルではないです)マクロを作りました。
このままでは、問題があるので、そのまま使わないで下さいね。
さて、ちょっとコードを解説していきましょう。
Application.Versionは、使用しているExcelのバージョンを取り出すものです。 で、ここにも、ちょっとしたTipsがあります。
まぁ、今やあまり使うことはありませんが..."7.0"は、Excel2002のバージョン番号です。 なので、Application.Versionでバージョン番号を比較する場合には、文字列での比較ではなく、Val関数で、バージョン番号を数値に変換した上で、比較しておいた方が良いということなんですね。
さて、バージョン番号を比較して、そのあとに、それぞれのバージョンごとに、ActiveWorkbook.SaveAsで、ファイルを保存しています。 まぁ、Excel2007では、デフォルトで.xlsx形式で保存されてしまうため、過去バージョンでも保存が出来るようにしたいだけですから、特に問題はありません。 Excel2007では、FileFormatのオプションで、xlExcel8という定数を指定しています。このxlExcel8は、Excel2007の保存のときの『Excel 97 - 2003ブック』での保存のことを指しています。まぁ、他にもExcel2007では、細かいバージョンでの保存も出来るので、ヘルプなどを参考にしてみて下さい。
で、問題というのは、ここにあって、xlExcel8という定数にあります。 Excel2007では何にも問題ありませんが、Excel2003などの前のバージョンのときには、この定数が定義されておらず、エラーになってしまうことがありますので、注意しましょう。 なお、回避策としては、このxlExcel8を、その値である『56』で置き換えてしまうか、もしくは、改めてxlExcel8を定数として定義し直す必要があります。まぁ、気軽に出来るのは、『56』で置き換えた方が良いかも知れませんね。 人によっては、『いやいやいや、絶対に定義し直すべきだ!』という人もいますが、その場合には、Excel2007では、面倒なことになってしまう可能性もあるので、まぁ、使いやすい方で対応してみて下さいね。 ということで、修正したコードは、次のようになります。
ということで、今日は、このへんで。
|
||||||||||
| コメント | 0 | ヒット: 655 |
皆さん、こんにちは。 QA通信編集員です。
昨日、柳田法務大臣が、国会の答弁では2つの言葉だけ覚えときゃいいって話で問題になってましたよね。 立場によって、その言葉の重さは違うのは理解しますしね。だからこそ、その立場になったときには、良く考えなきゃイカンってことなんですよ。
あー、腹が立ってきたので、愚痴はやめましょう。
さて、なんか最近、Excelでマクロを書きまくっている気がします。特にVBAが好きとか、そんな訳では決してないんですけどね。
まぁ、仕方なく...。そんな中で、作ったマクロの一部をご紹介です。
テストとかをやっていると、試験表をExcelとかでテストエンジニアの方たちに渡して、試験を実施してもらいますよね。 良く見受けられるのが、ファイルサーバ上のファイルを直接指定して、リンクを貼っちゃう形。 もちろん、全然変更していなければ問題はありませんが、なかなかそういう訳にもいかず、フォルダ構成を変えたり、ファイルの内容をちょっと変更したり、何よりも、プロジェクト終了後とかに、フォルダ整理とかしちゃいますよね。 すると、途端にこのメッセージに出会うことになっちゃいます。
『過去には縛られないのサ...』というカッコいい方は、この先は読まなくても大丈夫!あなたなら何でもやれる。
ボクは、基本的に貧乏性なので、過去のモノは大切にしたいので、集計のときには、マクロで集計するようにしておいて、極力リンクは貼らないようにしています。
そんなとき、ファイルを1ヶ所に集めますよね。
そこで登場するのが、今回のマクロって訳ですね。
それでは、まずは、コードを見てみましょう。
そんなに難しいものはないですよね。 まず最初に、ファイルオープンダイアログを開いて、そこで、フォルダを指定させています。
次に、指定されたフォルダを対象にして、特定の名前を持ったファイルを検索します。
見つかったファイルは、次々に配列に入れていき、保存するようにしていき、最後に、その配列を返すようにすれば、呼び出し元では、それらの配列を使って、ファイルの操作を行うようにするって形です。
さて、いかがだったでしょうか?
|
||||||||
| コメント | 0 | ヒット: 479 |
こんにちは。 QA通信編集員です。
二日酔いの中、無事に午前中の打ち合わせが終了しました。 AM11:30ごろに打ち合わせが終わったところで、以前に、このブログのCSVファイルへ書きだそうで紹介したCSVファイルへの出力方法で、ダメ出し(バグがあるとかではないので、前の方法でも大丈夫ですからね)が出たので、別の方法でも出力出来るんだよってマクロを作り終えたところです。 そんな呑んだくれ人間が書いたコードですが、せっかくなので、ご紹介しておこうかと...。
まず、前回のCSVファイルへ書きだそうのどこがダメだったのかを説明しますね。
前回のブログの中では、ActiveSheet.SaveAsというメソッドを利用してCSVファイルの形式で出力するというものです。まぁ、いわゆるExcelの標準の『名前を付けて保存』と同等のことを、マクロの中で行っていました。 この方法で出力した場合、Excelでは、縦方向は書き出されている行数分×横方向に書き出されているカラム数分という四角形で切り出しを行います。このため、カラム数分に満たない行については、不足している部分が、すべて『,(カンマ)』がついてしまうのです。
文字だけで書くと、良く分からないですよね...(^_^; 以下のようなファイルがあったとします。
このファイルをCSVファイル形式で出力すると、以下のようになります。
まぁ、縦横のサイズをちゃんと考えて、出力してくれるって訳ですわ。 ということで、この後ろについている『,(カンマ)』を取って欲しいというものです。
で、以下のような関数を作って、その関数を呼び出すようにしてみました。
とまぁ、こんな感じです。
ファイルをオープンし、そこに各セルを『,(カンマ)』で連結し、行単位で出力をしていくというものです。
一旦、strWorkという文字列に格納しているのは、以降がすべて空白ばっかりだったら破棄するようにするために、利用しており、空白が続いて、その後のセルが設定されているのであれば、その途中も含めてちゃんと書き出すようにしなければいけないため、このようなアルゴリズムにしているということですね。
なお、このマクロの中では、Printステートメントを利用していますが、書き出すだけならば、Writeステートメントというのもあります。しかし、Writeステートメントで書き出すと、書き出した文字列の両端に、『"(ダブルクォーテーション)』が付けられてしまいますので、このダブルクォーテーションを出力しないようにするために、Printステートメントを利用しています。
また、On Error GoTo...というステートメントも使って、ファイルオープン後に、エラーが発生してしまった場合に、ちゃんとファイルをクローズするために利用しています。まぁ、マクロが終了すれば、ファイルも閉じられるので、そんなに気にする必要もないのですが、安全のために、このような処理を追加しています。
|
||||||||||||||||||||||||||
| コメント | 0 | ヒット: 690 |
皆さん、こんばんは。 QA通信編集員です。
来週の月曜日に沖縄県に行くことになりました。日曜日に出発です。もちろん、仕事なんですけどね...(泣
さて、今日は、Excel関連のネタです。
で、皆さんは、CSVファイルを開いたときに、次のようなメッセージが出てきたことはありませんか?
『SYLKってなんじゃい!』
と思った方、そりゃ、知らない人も多いですよねぇ。 SYLK(シルク)ファイルは Symbolic Link Fileの略で、むかーし、マイクロソフトのMultiplan(マルチプラン)という初期の表計算ソフトで利用されていたフォーマットなんですね。 では、どんなときに、このメッセージが出るのかというと、ファイルの先頭に『ID』という文字が含まれているCSVファイルを含むテキストファイルをExcelで開くと、このメッセージが表示されます。
『おいおい、アホちゃうか?』
と思ったアナタ。 http://support.microsoft.com/kb/323626/ja
じゃぁ、どうすれば良いのかというと、上のリンク先にも解決方法が書かれていますが、以下のような方法があります。
とまぁ、こんな感じです。
最近は、あんまりCSVファイルを使うことも少なくなってきているので、この現象に出会うことも少なくなってきているとは思いますが、システム間のデータ受け渡しで使っている方も多いことでしょう。ただ、テキストファイルとして利用していれば、何にも問題ありませんし、Excelで編集しようと思わなければ、何にも問題にはならないということですよね。 けど、タイトル欄の先頭に『ID』と付けることも少なからずあるので、まぁ、頭の片隅にでも置いておけば良いでしょうね。
ということで、今日は、このへんで。
|
||||||||
| コメント | 0 | ヒット: 928 |
こんにちは。 QA通信編集員です。
今日も爽やかな日ですね。
さて、本日は、Excelのネタにしますね。
Excelファイルにシートがたくさんあると、そのシートを探すのも大変ですよね?そんなときに使えるマクロです。 例えば、以下のようなシーンが考えられますよね?
などなど...。まぁ、Excelではシート上で操作を行っていくので、このようなシーンはありますよね?
それではさっそくコードを見てみましょう。
短いコードですので、関数などにする必要もないかも知れませんけどね。
ちょっとその利用例も見てみましょう。
これは、シート『A』が存在している場合、そのシートの操作を行うために、アクティブな状態にします。 もちろん、この内容までも関数化しておいても利用価値はあるかも知れませんね。
では、本日は、このへんで。
|
|||||||||
| コメント | 0 | ヒット: 348 |
こんばんは。 QA通信編集員です。
さて、本日は、Excelネタです。 Excelは、ご存じのとおり、CSVファイルを扱うことが出来ますね。 そんなCSVファイルですが、このファイルは、カンマで区切られただけのテキストファイルですので、普通にテキストエディタでの編集することは出来ますが、ベタ書きされているファイルを編集することは難しいですよね。そこで、利用するのがExcelなどの表計算ソフトということになります。 さて、そんなCSVファイルなのですが、使った後も、CSVファイルとして保存しておきたいときもありますよね。特に、他のシステムなどで簡易的にデータのやり取りを行いたい場合などには、CSVファイルはとっても便利に使えます。そこで、CSVファイルとして保存することになるのですが、ExcelからCSVファイルに保存するときには、いくつか注意しなければいけない点があります。
まぁ、注意点といっても、大した話ではないんですけどね。 ということで、CSVファイルへの出力方法です。
この方法は、Excelのファイル出力機能(SaveAsメソッドは、『名前を付けて保存する』という機能ですね)を使って出力しています。もちろん、テキストファイルへと1行づつ書き出す方法もありますが、まぁ、設定されている値を編集しない限りは、Excelのファイル出力機能を使って書き出すのが簡単で良いでしょうね。
さて、このコードの中で、Application.DisplayAlertsというのがありますが、これは、警告メッセージの出力を制御するものです。
ということで、今日は、このへんで。
|
||||||||
| コメント | 0 | ヒット: 720 |
こんにちは。
QA通信編集員です。
今朝、テレビの情報番組の中で、「チンパンジーにも助け合いの心があるのが実験で分かった」というニュースが流れていました。ボックスの中にチンパンジーを入れて、それぞれのボックスの前には、ジュースとステッキを置くという実験で、ボックス前にジュースがあるチンパンジーが「取って!」みたいな仕草をすると、ボックス前にステッキがあるチンパンジーが取ってあげていました。 その実験の前に、お互いのチンパンジーが、交互に手伝うと両方ともジュースを飲めたって実験もやっていた訳なので、「本当に助け合いか?何か貰えると思ったんじゃね?」とか、「野生でもやるのか?」とか疑問は残りますが...。まぁ、無償の助け合いらしいです。
私も日々悩んで、周りの人に助けられっぱなしなので、そのうち何か恩返し出来ればと思います。
さて...、今回は、前々回の記事で、CSVファイルのインポート処理のネタを書きましたが、その後、質問などもあったので、補足しておこうかと...。
タイトルのとおり、UTF-8形式のテキストファイル(CSVファイルやTXTファイル)をエクセルで読み込むと文字化けしてしまいます。 このため、前々回の記事のCSVファイルのインポート処理の関数を使っても、文字化けしてしまいます。 http://support.microsoft.com/kb/821863/ja これは、Excel の仕様に基づく制限事項となっているので、バグでは無いらしいんですけどね...。 しかし、データベースからの出力のときに、UTF-8での出力というのも多いので、何とかして欲しいというのが、皆さんの本音ではないでしょうか?少なくても私は、直してほしいですねぇ。
このネタは、結構有名なのですが、それでも、たまに問い合わせを受けます。
対処方法は、ぜんぜん簡単です。 エディター(文字コードを変更出来る必要があります)を使って、一旦、ファイルを開き、SHIFT-JIS形式に変換後、ファイルを保存すれば、その後は、エクセルで開くことが出来ます。要は、UTF-8形式の文字コードを、SHIFT-JIS形式の文字コードに変換すれば大丈夫ということですね。 で、せっかくならば、文字コード変換するコードを追加した方が楽ですよね?
ということで、もう少しすると、このコードを変更すると思いますので、そのときに、UTF-8の文字コード読み込みと、変換処理を行うコードを追加したものを作ってみたいと思いますので、そのときには、改めてお話をさせてもらえればと思います。
|
|||||||
| コメント | 0 | ヒット: 5172 |
皆さん、おはようございます。 QA通信編集員です。
今日もとても気持ちいいですね。 天気が良いとテンションが50%増しです。逆に雨は、50%減ですが...。 今日は、電車で移動しながら、この記事を書いています。といっても、新幹線などでゆっくり移動中って訳ではなく、地下鉄移動中に慌ただしく書いています。 「他に時間があるだろう!」とか思われますよね。 そうなんですよね、たぶん、他に時間を取ろうと思えば、取れるとは思うのですが、ボクは、勝手に空き時間休暇制度(?)を導入しているので、比較的に空いている時間が無いんですよねぇ...。空き時間休暇制度って、ホントにちょっとした空き時間だけが休暇で、それ以外は、全部仕事って制度を勝手に決めてるんです。 で、その空き時間でQA通信を書いているって感じなんです。
さてさて、本日は、前回の続きで、実際に集計処理をしちゃいましょうってネタです。 集計処理といっても、大した話ではありません。要は、リストから個数を抜き出して、表にしちゃいましょうってコトです。
これと同じ処理を行います。しかも、自動で。 ここでは、以下の3つのシートを使います。
集計する際に、問題になるのが、リスト内には存在しない項目名です。 もちろん、リスト内に存在しない項目名は必要ないという場合もありますが、集計する際には、その項目が、0件であるということも重要な情報となります。このため、「項目名が記載されているシート」に、すべての項目名を記載しておき、そこから項目名を取りだそうというものです。
先頭の行には、項目数が入っており、次には、「データが入っているシート」内でのカラム名、項目名と続きます。まぁ、このあたりはプログラムの作り方次第なので、応用して作りなおして貰えればと思います。 「集計値を出力するシート」は、先にデータが存在している可能性もありますので、最初にシート内のデータを削除します。これは、各パラメータが変更されても、それに対応出来るようにする意味も込めています。なお、集計自体は、Excelの集計関数であるCOUNTIFを使用します。
最後に、集計した表からグラフ(ドーナツ型)を作成します。通常、グラフを作成すると、0件のデータも表示してしまいますが、グラフ内では、この0件のデータを表示させてしまうと、ごちゃごちゃしてしまいますので、0件データは削除するようにします。
たったこれだけです。
手作業では、グラフの作成にちょっと手間がかかるかも知れないので、5分から10分ぐらいの作業ですね。ただ、多くのデータの集計を行い、グラフを作成する作業をすると、すぐに1時間ぐらいの作業時間になってしまうでしょうね。 それではさっそくそのコードを見てみましょう。
ちょっと長いですが、ご容赦下さい。
これで、集計した表とグラフの作成が出来ます。 ちょっと冗長になっている部分もあるとは思いますが、ご勘弁を...。
ご質問などあれば、是非、お聞かせ下さい。(ご質問は、こちらから)
|
||||||||
| コメント | 0 | ヒット: 713 |
皆さん、こんばんは。 QA通信編集員です。
今日、友人から11月4日の東京ドームのチケットあるよって、電話がかかってきて気づきましたが、今日から日本シリーズが始まりましたね。阪神は、もう来年に向かっているので、あんまり興味はないのですが、日本ハム頑張れって感じですが...もうすでに1敗してしまいましたね...(T_T) ボクは、北海道の出身でして、北海道の人たちは、日本ハムが来るまでの間は、6割、7割ぐらいの人たちは巨人ファンだったはずなのですが、今ではすっかり日ハムファンばかりです。 けど、やっぱり地元に野球だけじゃなく、スポーツチームがあるってのは良いですねぇ。
さて、今日は、Formの使い方のネタ出しをしたいと思います。
文字列を入力させたり、何かを選択させたりと、Formを使うことで対応が出来ます。
Formの作り方については、どこかのサイトを参考にして作って貰えればと思いますが、ここでは、次のようなFormを作ります。
まず、どのような仕様なのかを説明しておきます。
ワークブックに「集計-」で始まるシートがある場合に、「集計-」以降の文字列を対象に、データを集計するような仕組みを作りたいと考えました。そこで、このダイアログでは、「集計-」で始まるシート名を検索して、それ以降の文字列を、(リストボックスへ)一覧表示するようにします。 リストボックスは、複数選択出来るようにしますが、1つ1つの項目を選択していては面倒なので、チェックボックスを使って、全選択や全解除が行えるようにしたいと思います。単にすべてを選択したり、すべての選択を解除したりすることが目的なので、チェックボックスである必要はなく、ボタンにしちゃっても構わないんですけどね、まぁ、ここではチェックボックスにしておきました。
Formを表示させる場合、呼び出し元のプログラムの中で、以下のように書きます。
SelectItemというのが、このFormの名前です。
さて、呼び出し元でShowメソッドを使うと、Formが表示されるのですが、Form側では、最初にInitializeイベントが発生します。この初期化イベントは、表示よりも前に発生するイベントですので、Formに何かを設定する場合には、このイベント処理の中で、行うようにします。
それでは、コードを見てみましょう。
なお、この初期化処理の中では、リストボックスやチェックボックスに設定を行っていますが、このとき、「リストボックスにアイテムが設定されたよ」とか、「チェックボックスにチェックされたよ」というイベントも発生します。 リストボックスにアイテムが設定されたよというイベントに対しては、何も処理を行っていませんが、「チェックボックスが選択されたよ」というイベントに対しては、以下のような処理を行っています。
これは、チェックボックスがクリックされたときのイベントですね。 この処理の中で、チェックされた状態になったのであれば、リストボックス内のアイテムを全部選択状態にしています。
|
||||||||||
| コメント | 0 | ヒット: 801 |
皆さん、こんにちは。 QA通信編集員です。
うちの会社も、今日(10月17日)でちょうど2周年を迎えることになりました。 もう2年かぁ...と思いつつも、まだ2年。日々勉強の毎日です。 QA通信も、毎日は配信出来ていませんが、もっと多くのネタを出せるように頑張んなきゃいけないですね。 さて、今日のネタも、かなり使えるネタなので、是非、使いまくって下さい。
マクロを使って色んな処理を行わせていると、たまに欲しくなってくるのがパラメータです。 このとき、最初は、グレーだったけど、そのうち、グレーじゃなくて、オレンジ色にしたいなぁ...と。
もちろん、この記事を読んでいる方のようにマクロを知っている方であれば、VBAのコードをちょこちょこっと書きかえれば良いので、何にも問題ないと思いますが、このようなことを誰もが出来る訳ではないですよね? そんなときに、別のシートに、色を設定出来るようにしておき、その色が変更されたら、マクロで処理するときに、その色を使って処理が行えると、とても便利です。使う人には、このシートのここの部分を変更してねって教えておけば大丈夫です。つまりは、このシートの使い方を、どこかに書いておけばよいのです。
パラメータの設定シートは、こんな感じです。
ようは、このシートのデータを読み込み、マクロの内部で使用できるようにしちゃいましょうって話です。
このシートからのデータの読み込みを関数として用意してみました。
制限事項というか、このプログラムでは、色を取得するときには、項目名に【色】という文字がどこかに入っている必要があります。もちろん、あまり使われないような文字列にしても問題ありませんので、そのあたりは、適当に修正して使ってみてください。
設定シートを作らなければいけないという手間はありますが、ユーザーに合わせたカスタマイズが出来ますってことで、それなりに使い道はあるのではないでしょうか?
|
||||||||
| コメント | 0 | ヒット: 1092 |
皆さんは、Excelを使うことって多いでしょうか?
私は、仕事の中で、Excelを使うことがとても多いです。 で、このとき、何度も同じようなコトを行う場合には、VBAのマクロを作ってコマンドとして使えるようにしています。もちろん、関数で実現出来るのであれば、関数優先ではありますが...。
というのも、仮に1回あたり10分かかるような作業があったとすれば、10回同じ作業を行う予定なら100分もかかりますからね。それなら、その100分を使って、先にマクロにしておこうって考えです。まぁ、「後に残した方が得ぢゃん!」ってコトですね。マクロを作って、何かしら残しておけば、後から、別の用途にも応用出来たりもしますし。
そこで、今まで色々と作ったものの中から、QA通信の中で、Tips集みたいな形でご紹介出来ればと思っています。
冗長なコードなどがあるかも知れませんし、もっと他にも良い方法があるよというのもあるかも知れませんが、ちょっとでも、皆さんの参考になればと思います。(あっ、別な良い方法があるのであれば、コメント等で教えて貰えると助かります。まだまだ勉強中なもので...)
ということで、前置きはこのぐらいにして...。
それでは、Excelシリーズの第一弾を始めましょう。
皆さんの中には、Excelでタスクリストのような何らかのステータスを管理することってありませんか?
以下の図は、そのToDoリストの画像です。
Cのカラムに、Openとか、Closeとか、Cancel...などなど、色々なステータスを設定するようになっています。
さて、このようなExcelファイルって、良く見かけますよね? このようなファイルでは、ステータスが変更されたときに、その行の色を変えていたりしませんか?
まさに、私も同じことをやっています。
こんな些細な作業は、Excelに慣れている方なら、ほんの10秒もかからないでしょうね。
ということで、こんな単純な作業であるからこそ、マクロにしてしまいましょう。
仕様としては、こんな感じ。
Excelでは、ワークシートの内容が変更されたときには、Worksheet_Change(ByVal Target As Range)が呼び出されます。これは、ワークシート内のセルが変更されたときに、必ず呼び出される関数です。すべての変更が対象となるので、この関数内では、最初に必ず該当箇所だけが処理対象となるようにチェックを入れる必要があります。 で、次のようなコードを書いてみました。
さぁ、これで10秒の作業からStatusを選択するだけの作業に変わりましたね。
もちろん、この使い方は、その他にも、色んな応用方法が考えられそうですよね?
|
||||||||||||||||||||
| コメント | 0 | ヒット: 1382 |




