レジにて半額(ブログ版)

<   2006年 06月 ( 12 )   > この月の画像一覧




Excel4マクロ

前回Excel2007β版のマクロで、オートシェイプ関連の物はExcel2003以前とかなり違いがあると書きました。もちろん製品版では直っている可能性もあります。
それではExcel4マクロはどうなっているでしょうか?

ExcelでVBAがマクロ言語として使用できるのはバージョン5以降です。Excelバージョン4以前は、VBAでは無く独自のマクロ言語が使われていました。
互換性維持のためExcelバージョン5以降もExcel4マクロの使用は出来るようになっています。ワークシート画面が表示されている時に、CTRLキーを押しながらf11キーを押すと、マクロ記述用のマクロシートが挿入されます。
今回、確認したところ、Excel2007β版でも上の操作は可能でした。Excel4マクロなど知らないので(苦笑)、実際に動かしては見ませんでしたが。

さて、Excel4マクロは名前定義を使えばワークシート上でも使用可能です。定番で、セルの色をカウントする時にExcel4マクロを使用するというテクニックがあります。(本来ならExcel4マクロではなくVBAでユーザー定義関数を組むのが良いです。)

Excel2003での例
b0107691_2314364.gif

「挿入」-「名前」-「定義」で「名前」欄にgetcellと定義(定義する名前は特に決まっていません、getcellは一例です。)
「参照範囲」欄に=GET.CELL(24,A1)+NOW()*0 と入力して「OK」
b0107691_23162922.gif

これで、任意のセルに =getcell と入力すれば、そのセルの前景色のカラーインデックス番号を返します。

Excel2007β版での例
さて「Excel2003での例」をExcel2007β版に読み込ませてみました。結果は #NAME?になってしまいました。
b0107691_23173492.jpg


これは、大変と「名前」を再定義します。Excel2003では「挿入」-「名前」でしたが、Excel2007β版ではどこにあるのだろう?
どうやら「数式」-「名前付きセル」のようです。名前を新規に登録するのは「範囲に名前を付ける」で、修正は「名前の管理」で行います。
b0107691_23184484.jpg

b0107691_23194830.gif

b0107691_2320454.gif

「名前の管理」で「編集」を選択し内容を確認して、特に修正点がないので「OK」-「閉じる」で終了させると、#NAME?は解消しましたが、セルに返ってくる値がすべて0になっています。
b0107691_23203874.gif

これがワークシートをマクロ実行可能な形式で保存しても同じでした。
最初にも書きましたが、製品版では直っている可能性もあります。しかし、もう過去の資産としてExcel4マクロは捨て去る時期に来ているのでしょう。上に書いた定番のTIPSにも、もう引退してもらった方が良さそうです。
[PR]



by Lautan | 2006-06-23 23:21 | Excel | Comments(1)

口なしドラえもん

某ブログ(この書き出しマンネリ?)で、ドラえもんの絵を描くマクロがExcel2007で動かない(というより動くんだけどちゃんとしたドラえもんにならない)と書いてありました。
試してみたらやはり変!

原因はVBAでのオートシェイプの描画内容が変わったことに有るようです。

今回ドラえもんを描画するVBAプログラムを見ていくと、Excel2003のVBAの機能から以下の変更がありました。
(1)カラーインデックスのデフォルトカラーが変わった
(2)オートシェイプの規定値が塗りつぶしになった
(3)自由線を引く構文が変わった
(4)吹き出しを修正する構文が変わった

このうち(1)(2)はプログラムを修正することで対応可能ですが、(3)(4)の対応方法が分かりません。
そもそもExcelにはマクロの自動記録機能があって、オートシェイプの作成もマクロ記録出来たのですが、Excel2007β2ではオートシェイプの描画がマクロ記録出来ません。
どうも、まだオートシェイプ関連のVBAは作り込み不足のようです。
(3)(4)が変わるのはあんまりなので、これは正規版では過去との互換性を維持する方向になるような気がします。
つまりこれは仕様変更ではなく単なる(あわわ)では無いかと。
また(1)(2)についても、互換性を維持してくれないと困ります。

さて、Excel2003でも2007β2でもちゃんと動くようにドラえもん描画プログラムを変えてみましたが、2007β2では口をかくところがうまく動かないので、ここはコメントアウトしました。
おかげで口のないドラえもんになってしまいました。安倍晴明の時代だったら、口なしドラえもんが枕元に化けて出てくるかもしれません(笑)
---------------------------------------------------------------------------------------
Option Explicit

Sub DORA()
Dim L As Long, T As Long
Range("a1").Select
L = ActiveCell.Left - 160
T = ActiveCell.Top - 50

ActiveSheet.Shapes.AddShape _
(msoShapeOval, 283.5 + L, 128.25 + T, 51#, 72.75).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
Selection.Copy
ActiveSheet.Paste
Selection.ShapeRange.Top = 128.25 + T
Selection.ShapeRange.Left = 283.5 + 51 + L

ActiveSheet.Shapes.AddShape _
(msoShapeOval, 310 + L, 160 + T, 11.25, 21#).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 0, 0) '//黒
ActiveSheet.Shapes.AddShape _
(msoShapeArc, 352 + L, 165 + T, 7.5, 8.25).Select
Selection.ShapeRange.Adjustments.Item(1) = 180
Selection.ShapeRange.Line.Weight = 2.25
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255) '//白

ActiveSheet.Shapes.AddShape _
(msoShapeOval, 319.5 + L, 191.25 + T, 27.75, 28.5).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0) '//赤
ActiveSheet.Shapes.AddShape _
(msoShapeOval, 336.75 + L, 197.25 + T, 8.25, 8.25).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255) '//白

ActiveSheet.Shapes.AddShape _
(msoShapeOval, 229.5 + L, 155.25 + T, 212.25, 173.43).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255) '//白
Selection.ShapeRange.ZOrder msoSendToBack
Selection.ShapeRange.ScaleHeight 0.97, _
msoFalse, msoScaleFromBottomRight

ActiveSheet.Shapes.AddShape _
(msoShapeOval, 204.75 + L, 91.5 + T, 263.25, 237.75).Select
With Selection.ShapeRange
.Fill.ForeColor.RGB = RGB(100, 100, 255) '//スカイブルー
.ZOrder msoSendToBack
.ScaleHeight 0.9579, msoFalse, msoScaleFromBottomRight
.ScaleWidth 0.97, msoFalse, msoScaleFromBottomRight
.IncrementTop -0.75
End With

ActiveSheet.Shapes.AddLine _
(333.75 + L, 221.25 + T, 333.75 + L, 266.25 + T).Select '//ひげ
ActiveSheet.Shapes.AddLine _
(375.75 + L, 215.25 + T, 423.75 + L, 226.5 + T).Select
Selection.ShapeRange.Flip msoFlipVertical
ActiveSheet.Shapes.AddLine _
(375.75 + L, 235.5 + T, 426 + L, 239.25 + T).Select
Selection.ShapeRange.Flip msoFlipVertical
ActiveSheet.Shapes.AddLine _
(375.75 + L, 252 + T, 423.75 + L, 255.75 + T).Select
ActiveSheet.Shapes.AddLine _
(247.5 + L, 219.75 + T, 288.75 + L, 225.75 + T).Select
Selection.ShapeRange.Flip msoFlipHorizontal
Selection.ShapeRange.Flip msoFlipVertical
ActiveSheet.Shapes.AddLine _
(243.75 + L, 239.25 + T, 288.75 + L, 239.25 + T).Select
Selection.ShapeRange.Flip msoFlipHorizontal
ActiveSheet.Shapes.AddLine _
(251.25 + L, 252 + T, 291 + L, 257.25 + T).Select
Selection.ShapeRange.Flip msoFlipHorizontal

'With ActiveSheet.Shapes.BuildFreeform _
'(msoEditingAuto, 246 + L, 240 + T)
'.AddNodes msoSegmentCurve, msoEditingAuto, 241.5 + L, 250.5 + T '//口
'.AddNodes msoSegmentCurve, msoEditingAuto, 261.75 + L, 261.75 + T
'.AddNodes msoSegmentCurve, msoEditingAuto, 334.5 + L, 268.5 + T
'.AddNodes msoSegmentCurve, msoEditingAuto, 395.25 + L, 263.25 + T
'.AddNodes msoSegmentCurve, msoEditingAuto, 428.25 + L, 252 + T
'.AddNodes msoSegmentCurve, msoEditingAuto, 420.75 + L, 241.5 + T
'.ConvertToShape.Select
'End With
ActiveSheet.Shapes.AddShape _
(msoShapeOval, 321.25 + L, 330 + T, 33#, 31.5).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0) '//黄色
ActiveSheet.Shapes.AddShape _
(msoShapeRoundedRectangle, 317.5 + L, 342.75 + T, 40.5, 6#).Select
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0) '//黄色

ActiveSheet.Shapes.AddShape _
(msoShapeRoundedRectangle, 334.75 + L, 351 + T, 6#, 8.25).Select
Selection.ShapeRange.ScaleHeight 1.27, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 0, 0) '//黒

ActiveSheet.Shapes.AddShape _
(msoShapeOval, 240.75 + L, 261 + T, 192#, 75.75).Select
With Selection.ShapeRange
.ScaleHeight 1.63, msoFalse, msoScaleFromBottomRight
.IncrementLeft -1.5
.ScaleWidth 1.06, msoFalse, msoScaleFromTopLeft
.ScaleHeight 1.01, msoFalse, msoScaleFromTopLeft
.Fill.ForeColor.RGB = RGB(255, 0, 0) '//赤
.ZOrder msoSendToBack
End With

ActiveSheet.Shapes.AddShape _
(msoShapeOvalCallout, 493.5 + L, 73.5 + T, 324#, 144.75).Select '//吹き出し

With Selection
.Characters.Text = "ぼく、ドラえもん です。"
.Font.Size = 20
.Font.Color = RGB(0, 0, 0) '//黒

'.ShapeRange.Adjustments.Item(1) = -0.0139
'.ShapeRange.Adjustments.Item(2) = 0.9586

.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.ShapeRange.Fill.ForeColor.RGB = RGB(100, 255, 100) '//ライトグリーン
End With

ActiveCell.Activate
End Sub
[PR]



by Lautan | 2006-06-21 22:44 | Excel | Comments(0)

合成可能な丸

別の所に書いたVista+Excel2007の文字コード関連の記事です。

合成可能な丸

http://www.geocities.jp/laut6/moji/vista7.html
http://www.geocities.jp/laut6/moji/vista8.html
[PR]



by Lautan | 2006-06-11 13:55 | Excel | Comments(0)

【Vista】 ファイルの上書きコピー

今までのWindowsではすでに有る名前と同じ名前のファイルを上書き保存しようとすると、警告のメッセージが表示され、コピーの続行と中止を選択できました。
b0107691_11432577.jpg

Vistaではこれに加え「名前を変えてコピー」できるようになりました。
b0107691_1144206.jpg

[PR]



by Lautan | 2006-06-11 11:44 | Windows | Comments(0)

ドキュメント検査

Excel2007のファイルメニューには「最終処理」-「ドキュメント検査」というのが増えました
b0107691_1135095.jpg

実際には下の画像にあるような項目をチェックしてくれるようです。
b0107691_1135172.jpg

実行すると、「ドキュメントのプロパティと個人情報」がブックに含まれていると警告が表示されます。

b0107691_11353063.jpg

ここで「すべて削除」を選択して保存すれば、上記の情報は保存されない...はずです。
(実際に中身を確かめたのではないので)
[PR]



by Lautan | 2006-06-11 11:40 | Excel | Comments(0)

新しい関数を使ったブックを古い形式で保存(2)

「新しい関数を使ったブックを古い形式で保存」で作ったExcel2007で新規でお目見えした関数を使ったブックをXP SP2上にインストールしたExcel2003で読み込んでみました。
結果は↓
b0107691_2231653.jpg

Excel2003に無い新規関数が、#NAME?になるのはまあその通りですよね。
気になったのは
(1)そのブックは読み取り専用でしか開けなくなっていた。
(2)関数名の頭に「_xlfn.」が付いている
ところです。
もう少し分かったら、また続きを書きます。
[PR]



by Lautan | 2006-06-10 22:34 | Excel | Comments(0)

新しい関数を使ったブックを古い形式で保存

前回は、Excel2007で新しく加わった関数について少し触れました。
今日はそのうちIferror関数を使って見ました。
b0107691_2250462.jpg

使い方については画面を見ていただくとして(←手抜き)、さてこれをExcel2007で新しくなった形式ではなく、以前のExcelの保存形式(拡張子 .XLS)で保存したら、どうなるか試してみました。
Iferror関数を使ったブックを保存しようとすると、まずこのようなメッセージが出ます。
構わず「継続」すると、
b0107691_22505555.jpg

次にこのようなメッセージが出ます。
b0107691_2251394.jpg

「はい」をクリックすると保存されます。
では、ここで保存したファイルをもう一度Excel2007で呼び出してみます。関数は消えているでしょうか?
ちゃんと残っていて、この記事の最初に載せた写真の通り関数も表示されました。
(追記)
Excel2003以前のExcelで読んだときどうなるかはやりませんでした。それは次回のネタと言うことで(笑)
[PR]



by Lautan | 2006-06-09 22:57 | Excel | Comments(3)

マクロはどこへ行った!

某ブログ(最近こればっか)に、Excel2007β版では、条件付き書式が従来の3パターンから大幅に増えたという書き込みがありました。
それでは、条件付き書式をマクロで記述したらどうなるだろうか?試してみようと思ったら、あれ???マクロの設定メニューが無い!

探して探して、ようやく見つけました。
ファイル-Excelのオプション-詳細設定-個人設定-「開発」タブをリボンに表示する
で、「開発」タブを表示させなくてはいけないのです。
(クリックすると写真は拡大表示になります)
b0107691_22563680.jpg

表示された「開発」タブの中身はこんなものです。
b0107691_22573457.jpg


さて、ようやくマクロ記録が出来ます。条件を4パターン指定して記録すると以下のコードが自動作成されました。

Sub Macro1()
'
' Macro1 Macro
'
Range("B2").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="$A$2=1"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
ExecuteExcel4Macro "(6,1,-1,,56,,,2,,0)"
Selection.FormatConditions(1).StopIfTrue = False
Range("B2").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="$A$2=2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
ExecuteExcel4Macro "(6,1,-1,,56,,,2,,0)"
Selection.FormatConditions(1).StopIfTrue = False
Range("B2").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="$A$2=3"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
ExecuteExcel4Macro "(6,1,-1,,56,,,2,,0)"
Selection.FormatConditions(1).StopIfTrue = False
Range("B2").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="$A$2=4"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
ExecuteExcel4Macro "(6,1,-1,,56,,,2,,0)"
Selection.FormatConditions(1).StopIfTrue = False
End Sub

やはり、今までのマクロと雰囲気が違います。うーん、大変そう。
[PR]



by Lautan | 2006-06-06 22:59 | Excel | Comments(4)

SUMIFS関数

Excel2007で増えた関数として、

IFERROR
AVERAGEIF
AVERAGEIFS
SUMIFS
COUNTIFS

が有るそうです。
某ブログに、SUMIFSを使ってみたが、HELPに書いてあった結果と全然違うという記事がありました。
試してみましたが結果は同じでした。恐らくこれはHELPが大嘘を書いています。

下図のようなデータに対して
b0107691_2235415.jpg

下のような式を入れてみました。
b0107691_22355554.jpg

恐らく
(1)合計範囲には複数列を指定できない。
(2)条件はORでは無くANDで計算する。
だと思います。
つまり、例で上げた式(上の方)では、果物の種類がリンゴ、または等級がA
ではなく
果物の種類がリンゴで、かつ等級がAのものの合計数を数えることになるようです。
[PR]



by Lautan | 2006-06-06 22:46 | Excel

ステータスバー

某ブログのネタのパクリです。
今までのExcelはセル範囲を選択すると、そのセル範囲の情報がステータスバーに表示されました。
b0107691_873951.jpg

ただし、表示される情報は1つだけでした。通常は合計ですが、データの個数や最小値なども選択可能です。
b0107691_875219.jpg

Excel2007では、複数表示選択出来るように改良されています。
b0107691_88492.jpg

全部表示したら、このようになりました。
b0107691_881490.jpg

[PR]



by Lautan | 2006-06-04 08:09 | Excel | Comments(1)

興味のある物色々。賞味期限切れで廃棄されないよう気をつけます。
by Lautan
プロフィールを見る
画像一覧

にほんブログ村に参加しました

にほんブログ村 地域生活(街) 関東ブログ 横浜(市)情報へ

最新の記事

最新のコメント

季節感ある背景、いいです..
by る。 at 18:11
お久しぶりです。お元気で..
by Lautan at 21:48
お久しぶりです。 昔ハ..
by 元なんちゃってリーダー at 20:22
コメントありがとうござい..
by Lautan at 22:08
もうExcel2016が..
by る。 at 20:47
こちらの記事はかわいい写..
by る。 at 11:30
かまくら焼肉リベンジに是..
by る。 at 11:26

最新のトラックバック

venushack.co..
from venushack.com/..
www.whilelim..
from www.whilelimit..
http://while..
from http://whileli..
http://www.v..
from http://www.val..
鳥取砂丘に’おとぎの国’..
from ローカルニュースの旅

以前の記事

2017年 12月
2017年 05月
2017年 04月
2016年 10月
2016年 06月
2016年 05月
2016年 04月
2016年 03月
2016年 02月
2016年 01月
2015年 05月
2015年 03月
2015年 02月
2015年 01月
2014年 12月
2014年 11月
2014年 10月
2014年 09月
2014年 08月
2014年 05月
2014年 04月
2014年 03月
2014年 02月
2014年 01月
2013年 12月
2013年 11月
2013年 10月
2013年 09月
2013年 08月
2013年 07月
2013年 06月
2013年 05月
2013年 04月
2013年 03月
2013年 02月
2013年 01月
2012年 12月
2012年 11月
2012年 10月
2012年 09月
2012年 08月
2012年 07月
2012年 06月
2012年 05月
2012年 04月
2012年 03月
2012年 02月
2012年 01月
2011年 12月
2011年 11月
2011年 10月
2011年 09月
2011年 08月
2011年 07月
2011年 06月
2011年 05月
2011年 04月
2011年 03月
2011年 02月
2011年 01月
2010年 12月
2010年 11月
2010年 10月
2010年 09月
2010年 08月
2010年 07月
2010年 06月
2010年 05月
2010年 04月
2010年 03月
2010年 02月
2010年 01月
2009年 12月
2009年 11月
2009年 10月
2009年 09月
2009年 08月
2009年 07月
2009年 06月
2009年 05月
2009年 04月
2009年 03月
2009年 02月
2009年 01月
2008年 12月
2008年 11月
2008年 10月
2008年 09月
2008年 08月
2008年 07月
2008年 06月
2008年 05月
2008年 04月
2008年 03月
2008年 02月
2008年 01月
2007年 12月
2007年 11月
2007年 10月
2007年 09月
2007年 08月
2007年 07月
2007年 06月
2007年 05月
2007年 04月
2007年 03月
2007年 02月
2007年 01月
2006年 12月
2006年 11月
2006年 10月
2006年 09月
2006年 08月
2006年 07月
2006年 06月
2006年 05月

検索

フォロー中のブログ

ファン

ブログジャンル

画像一覧