|
もう少しまとめてからと思いましたが、よく解らないし面倒になってきたので、前にここに載せて消した時とほとんど変わってません。
1度で掲載できないので(10000文字制限、未満でも撥ねられた)2度に分けます。
--------------------
今更って感じもするし、これで何ができるのか良く解りませが、
興味本位で、自分なりに調べてわかったような範囲内での、実に中途半端なものを載せてみます。
あまりまとまっていませんが...。
使う用途は無いと思いますけどね。
4.0マクロって、EXCEL5.0、EXL95のマクロの書き方だと思ってました。
EXCEL5.0のマニュアルは、手元にあってたまに見ているのに、4.0マクロの事が載ってない手抜きマニュアルだ〜、って思っていたから、余計に気づかずにいました。
EXCEL95のマニュアルにも4.0マクロの書き方は載ってなかったような。
5.0も95も今と同じような書き方で、Subがあって、Functionもあります。
参考URL
EXCEL 4.0 マクロについて
ht tp://www.jp-ia.com/ans/file95.html
インストラクターのネタ帳
ht tp://www.relief.jp/itnote/archives/001370.php
マクロを使おう - SELECT 関数
ht tp://support.microsoft.com/default.aspx?scid=kb;ja;410566
マクロを使おう - EXEC 関数
ht tp://support.microsoft.com/default.aspx?scid=kb;ja;410602
マクロを使おう- GET.CELL 関数の応用
ht tp://support.microsoft.com/default.aspx?scid=kb;ja;410576
マクロを使おう − INPUT 関数
ht tp://support.microsoft.com/default.aspx?scid=kb;ja;410556
(ここに書いてあるGOTO文使用の例は、中途半端な説明の為、エラーになって動かない。)
マクロを使おう - FORMULA 関数
ht tp://support.microsoft.com/default.aspx?scid=kb;ja;410481
ここのエクセル質問箱
ht tp://www.vbalab.net/vbaqa/c-board.cgi?page=&no=49560&mode=ntr&id=excel&cmd=jmp
今頃、ここ↑を解析してみてRecord1って、マクロ記録1って事じゃん。って気づきました。
確か、Macのクラリスワークスのマクロ記録もこんな題名で記録されていたような...。
このマクロ記録コードがどこにあるのか見つけられなかったので、編集も何もできませんでした。
コードがあるのかも不明ですが。
コードを書く場所は、マクロシート。
マクロシートは、
Ctrl + F11 か、
Ctrlを押しながら、シートタブ → 挿入 → Excel4.0マクロ
で、作れます。
4.0マクロの実行方法
1、4.0マクロを書いた先頭のセル(プログラム名を書いた方がわかりやすい)、
A1だったらA1セル、A20だったらA20セルを選択して、
ツール → マクロ → マクロ から実行する。
2、マクロの先頭セルを右クリック → マクロの実行 でも、
上と同じマクロの選択ダイアログが表示されます。
3、ボタンからマクロを実行させる場合
標準モジュール等を使うので、4.0マクロの意味がなくなる感じもしなくはないですが。
標準モジュールに下記コードを記載後、シートのボタンかツールバーのボタンににマクロ登録。
(マクロ記録参考)
-----------------
Sub 実行1()
Application.Run ThisWorkbook.Sheets("Macro1").Range("A1")
End Sub
-----------------
実行したいマクロの先頭セルを選択して実行する場合。
-----------------
Sub 実行2()
Application.Run ActiveCell
End Sub
-----------------
1、
●メッセージボックスを表示させる。
(なぜ1番初めにメッセージボックスかと言うと、例として結果を表示するために使うから。)
以下のコードをマクロシートA1:A3に。
---------------
マクロ名
=ALERT("あああああ",3)
=RETURN()
---------------
上記コードの実行の仕方(手動)
A1セル(任意につけたマクロ名のところ)を選択して、
ツール → マクロ → マクロ を開くと、
マクロ名に「A1」と表示されてますから、そのまま実行。
B5セルの値を表示させる場合
=ALERT(B5,3)
引数(MsgBoxに当てはめると)
1 = vbInformation + vbOKCancel
2 = vbInformation + vbOKOnly
3 = vbExclamation + vbOKOnly
2、
●シート(Sheet1)の選択
=ACTIVATE("Sheet1")
3、
●Book1のアクティブシートの次のシートを選択
=ACTIVATE.NEXT("Book1")
4、
●次のウィンドウを選択。
次のウィンドウがないと無反応。(開いているブックが2つ以上で使用)
=ACTIVATE.NEXT()
5、
●アクティブセルの行
=ROW(ACTIVE.CELL())
---------------
=ALERT(ROW(ACTIVE.CELL()),2)
=RETURN()
---------------
変数使用
=SET.NAME("変数",ROW(ACTIVE.CELL()))
=ALERT(変数,2)
=RETURN()
---------------
※こういった書き方でも変数として使えるみたいです。
変数=ROW(ACTIVE.CELL())
直接セルを参照させた使用例。(A5:A8に書いたとして)
---------------
マクロ名
=ROW(ACTIVE.CELL())
=ALERT(A6,2)
=RETURN()
---------------
6、
●アクティブセルの列
=COLUMN(ACTIVE.CELL())
---------------
=SET.NAME("変数",COLUMN(ACTIVE.CELL()))
=ALERT(変数,2)
=RETURN()
---------------
7、
●アクティブブック名の取得
---------------
アクティブブック名1
=SET.NAME("BK",GET.DOCUMENT(88))
=ALERT(BK,2)
=RETURN()
---------------
アクティブブック名2
=SET.NAME("BK",GET.CELL(32))
=SET.NAME("BK",MID(BK,2,FIND("]",BK,1)-2))
=ALERT(BK,2)
=RETURN()
---------------
アクティブブック名3
=SET.NAME("BK",GET.DOCUMENT(1))
=SET.NAME("BK",MID(BK,2,FIND("]",BK,1)-2))
=ALERT(BK,2)
=RETURN()
---------------
8、
●アクティブシート名の取得
---------------
アクティブシート名1
=SET.NAME("SH",GET.CELL(32))
=SET.NAME("SH",MID(SH,FIND("]",SH,1)+1,LEN(SH)))
=ALERT(SH,2)
=RETURN()
---------------
アクティブシート名2
=SET.NAME("SH",GET.DOCUMENT(1))
=SET.NAME("SH",MID(SH,FIND("]",SH,1)+1,LEN(SH)))
=ALERT(SH,2)
=RETURN()
---------------
9、
●ブックのパス
---------------
=SET.NAME("PS",GET.DOCUMENT(2))
=ALERT(PS,2)
=RETURN()
---------------
●IF文
---------------A1:A5
IF文1
=SET.NAME("変数",11)
=IF(変数>10,"10より大","10より小")
=ALERT(A3,2)
=RETURN()
---------------
IF文2
=SET.NAME("変数",10)
=IF(変数>10)
= SET.NAME("比較","10より大")
=ELSE()
= SET.NAME("比較","10以下")
=END.IF()
=ALERT(比較,2)
=RETURN()
---------------
IF文入れ子
=SET.NAME("変数",10)
=IF(変数>10)
= SET.NAME("比較","10より大")
=ELSE()
= IF(変数<10)
= SET.NAME("比較","10より小")
= ELSE()
= SET.NAME("比較","10と同じ")
= END.IF()
=END.IF()
=ALERT(比較,2)
=RETURN()
---------------
IF文ELSEIF
変数=10
=IF(変数>10)
比較="10より大"
=ELSE.IF(変数<10)
比較="10より小"
=ELSE()
比較="10と同じ"
=END.IF()
=ALERT(比較,2)
=RETURN()
---------------
10、
●インプットボックス
=INPUT("入力してください。"&CHAR(13) &CHAR(13) & "例:あいうえお",3,"タイトル")
INPUTボックスの
"例:あいうえお",3,"タイトル"
↑
この「3」の意味は、まだわかってません。
---------------
マクロ名
=SET.NAME("LF2",CHAR(13) &CHAR(13))
=INPUT("入力してください。"& LF2 & "例:あいうえお",2,"タイトル")
=IF(A3<>FALSE,ALERT(A3,2))
=RETURN()
---------------
=INPUT("XXXX" ,データの種類 [,タイトル] [,初期値][,X座標][,Y座標] [,ヘルプ])
データの種類
0 数式
1 数値
2 文字列
4 論理値
8 セル参照
16 エラー
64 配列
11、
●GOTO文
ここの「マクロを使おう − INPUT 関数」の例題が動かない原因がわかりました。
ht tp://support.microsoft.com/default.aspx?scid=kb;ja;410556
例題では説明していませんが、名前定義していないとダメなようです。
名前定義無しの場合、直接セルを指定してやればいい。(A1形式の指定しかダメでした。)
--------------------
マクロシート「Macro1」に
A1 GOTO命令
A2 =SET.NAME("St1",1)
A3 =IF(St1=1,GOTO(A10))
A4 =ALERT("戻った。",3)
A5 =GOTO(Macro2!A1)
A6 =ALERT("終わり。",2)
A7 =RETURN()
A10 MacroEnd
A11 =ALERT("GOTOで、別シーとへ飛んだ先",3)
A12 =GOTO(A4)
A13 =RETURN()
++++++
別のマクロシート「Macro2」に記載
A1 行き先
A2 =ALERT("別シートのマクロ",3)
A3 =GOTO(Macro1!A6)
A3 =RETURN()
--------------------
12、
●Auto_Open、Auto_Close
ブックを開いた時にインプットボックスを表示し、
内容をメッセージボックスで表示。
インプットボックスを表示する前にアラートをはさんでみました。
ついでに、マクロシートのセルF1の内容も表示させると。
--------------
A1 Auto_Open
A2 =ALERT("インプットボックスの起動",1)
A3 =IF(A2=FALSE,GOTO(A6))
A4 =INPUT("入力してください。"&CHAR(13) &CHAR(13) & "例:あいうえお",3,"入力ボックス "&F1)
A5 =IF(A4<>FALSE,ALERT(A4,2))
A6 =RETURN()
--------------
しか〜し、このままブックを保存終了後、再度ブックを開いてもマクロは実行されません。
実行させるようには、上記4.0マクロを書いたシートのマクロの先頭、A1を名前定義で登録する必要があります。
コードを書いたマクロシートのA1セルを選択した状態で、
挿入 → 名前 → 定義 で、開くと名前欄に
「Auto_Open」がありますから、それを追加、OKで閉じます。
これが終わった後、ブックを保存終了して、開きなおすと実行されます。
--------------
Auto_Close
=ALERT("終了します",3)
=RETURN()
--------------
こちらも「Auto_Close」と書いたセルの名前定義が必要
13、
●参照形式の設定
(A1形式に変更しても、セルの選択などはR1C1形式で書かないとエラーになります。用途がわかりません。)
=A1.R1C1(TRUE) で、A1形式
=A1.R1C1(False) で、R1C1形式
14、
●応用編1
応用1
--------------------
A1 マクロ名 概要
A2 =SET.NAME("SH",GET.CELL(32)) 変数にアクティブブックシート名取得(マクロシートから実行するとして)
取得形式は、こんな感じ。「[ブック名]シート名」
A3 =SET.NAME("SH",MID(SH,2,FIND("]",SH,1)-2)) 変数SHをブック名だけにする
A4 =ACTIVATE.NEXT(SH) アクティブブックのアクティブシートの次のシート選択
A5 =SELECT("R5C2:R20C10") B5:J20セル選択(A1形式は使えない見たい。)
A6 =COPY() コピー
A7 =WORKBOOK.SELECT("Sheet3") 同ブックSheet3選択
A8 =SELECT("R6C2") B6選択(貼り付け先の基準セル(左上部分))
A9 =PASTE.SPECIAL(3,1,FALSE,FALSE) 値だけ貼り付け
A10 =CANCEL.COPY() コピーモード解除
A11 =RETURN()
--------------------
応用2(コピー元を選択しないだけ)
--------------------
A1 マクロ名 概要
A2 =COPY("Sheet1!R5C2:R20C10") Sheet1!B5:J20をコピー
A3 =WORKBOOK.SELECT("Sheet3") Sheet3選択
A4 =SELECT("R6C2") B6選択(貼り付け先の基準セル(左上部分))
A5 =PASTE.SPECIAL(3,1,FALSE,FALSE) 値だけ貼り付け (注)セルを選択しないで貼り付ける方法解らず。
A6 =CANCEL.COPY() コピーモード解除
A7 =RETURN()
--------------------
15、
●セルに値を入れる
=FORMULA("あいう","!D1") アクティブシートのD1に「あいう」を書き込む。
=FORMULA("あいう","!R1C4")
=FORMULA("あいう","Sheet1!R3C2") シート指定の場合。
シート名に変数を使った場合。
=SET.NAME("SH","Sheet1")
=FORMULA("あいう",SH & "!R3C2")
|
|