コンピュータで使われる「マクロ」ってなんでしょうか?
ビギナーでもわかるように、かみ砕いて説明頂けると助かります。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

マクロの例を示してみましょう!


と言っても、プログラムは書きません。手順の概念だけです。

あなたが学校に通っているなら、先生が出席をとることでしょう!その時、コンピュータ室でも高校や中学なら座席指定でしょうが、大学なら自由に座るでしょう。

そのとき、先生は出席カードを配ったり、点呼したりして、出席をとりますが、
小生なら、電子メールを私宛に送らせます。
題名に「学籍番号」を書かせて送信するだけです。

送られてきたメールの題名の番号を読み取り、Excelの名簿に、マクロで書き込みます。
これで出席取りは終了です。

マクロ名(ショートカットキーを割り当てると使い勝手がよい、たとえばCTRL+S)
1.メールを読み込む
2.それから番号を取り出す(これを配列へ入れておく)
3.Excelから番号を読み込む(これも別配列へ入れておく)
4.2で取り出した番号が、3のExcelの番号と一致したら○を書き込む、これを繰り返す。

このように、手順を書いていきます。途中を簡略化しています、ご了承下さい。
これをVBA(Visual Basic for Apilication)で書いていくのです。

簡単な計算などは関数で処理しますが、このような処理はマクロで処理します。
VBAは易しいか、難しいか? 意見の分かれるところでしょうか?
一般的な表現では易しいというのでしょうか?
プログラムの経験があれば簡単です!
では、
    • good
    • 0
この回答へのお礼

ありがとうございます。
マクロって、思ったより、難しそうでないような気がしてきました。

お礼日時:2001/08/15 16:57

hi63さんの書いたとおりなのですが、記述する言語は、VBではなく、VBAです。

(厳密な話はVBの板のお願いします。)
あと、hi63さんは、編集が大変だとおっしゃっていますが、私の意見を言わせていただければ、VBAは比較的習得しやすい言語だと思います。
挑戦してみてもそんはありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせていただきます。

お礼日時:2001/08/15 16:55

マクロは一連の操作を自動化するという機能です。

なので繰り返しや操作の多い
ものを簡単にし、作業時間等を大幅に節約できますよ。
ただ、Visual Basicというプログラミング言語で作成されるので
編集は大変かと思います。
作り方はEXCELだと<ツール>→<マクロ>→<新しいマクロの記録>で名前をつけて
操作すると、全ての操作を記憶します。あとは実行すればいつでもめんどうな
作業をボタン一つで操作したりできます。
    • good
    • 0
この回答へのお礼

とてもわかりやすい解説でした。
ありがとうございます。

お礼日時:2001/07/12 16:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QACCESS 2003の条件分岐について教えて頂けないでしょうか?

access2003を勉強中です。

先週1週間かけても解決できないことがありまして、どなたか教えて頂けないでしょうか。

内容は

会社で使用する勤務表に関してです。

ユーザー名(コンボボックス)、日付(カレンダーコントロール)、
出社時間(テキストボックス)、退社時間(テキストボックス
、作業内容(テキストボックス)をユーザーが入力し「登録」
コマンドボタンのイベントで入力した内容を、勤務表テーブルに
反映させたいのです。

その時に同じユーザーの同じ日付を2件入力させないようにしたいので

フォームに入力された内容からユーザー名と日付によって、
同じ内容が勤務表テーブルに無ければinsert、有ればupdateと
条件分岐をしたいのです。

しかし、

Public Sub kinmu()

Dim mmrs As ADODB.Recordset
Dim mmcn As ADODB.Connection

Set mmrs = New ADODB.Recordset
Set mmcn = Application.CurrentProject.Connection

mmrs.Open "勤務表", mmcn, adOpenKeyset, adLockOptimistic

mmrs.MoveFirst

If DCount("[ユーザー名] & [日]", "[勤務表]", "[ユーザー名]=[Forms]![フォーム1]![コンボ56]" & _
"and[日]=[Forms]![フォーム1]![テキスト88]") = 0 Then
mmcn.Execute "INSERT INTO 勤務表 ([ユーザー名],[日],[出社],[退社],[作業内容]) VALUES ([Forms]![フォーム1]![コンボ56],[Forms]![フォーム1]![テキスト88],[Forms]![フォーム1]![テキスト8],[Forms]![フォーム1]![テキスト17],[Forms]![フォーム1]![テキスト28]);"
Else
mmcn.Execute "UPDATE 勤務表 SET (ユーザー名=[Forms]![フォーム1]![コンボ56],日=[Forms]![フォーム1]![テキスト88],出社=[Forms]![フォーム1]![テキスト8],退社=[Forms]![フォーム1]![テキスト17],作業内容=[Forms]![フォーム1]![テキスト28] where [ユーザー名]=[Forms]![フォーム1]![コンボ56] and [日]=[Forms]![フォーム1]![テキスト88]);"
End If

として、「登録」コマンドボタンのイベントとしてCallキーワードによって呼び出そうとしているのですが、うまくいきません。

最初はDCount関数で件数を求め、それを変数に入れる。
IIF関数による分岐。などいろいろ試してはいたのですが、、、。

どなたか教えて下さい。よろしくお願いします。

access2003を勉強中です。

先週1週間かけても解決できないことがありまして、どなたか教えて頂けないでしょうか。

内容は

会社で使用する勤務表に関してです。

ユーザー名(コンボボックス)、日付(カレンダーコントロール)、
出社時間(テキストボックス)、退社時間(テキストボックス
、作業内容(テキストボックス)をユーザーが入力し「登録」
コマンドボタンのイベントで入力した内容を、勤務表テーブルに
反映させたいのです。

その時に同じユーザーの同じ日付を2件入力させないよう...続きを読む

Aベストアンサー

1)レコードセットは何のために開いているのですか?
2)分岐うんぬんの前に、

mmcn.Execute "INSERT INTO 勤務表 ([ユーザー名],[日],[出社],[退社],[作業内容]) VALUES ([Forms]![フォーム1]![コンボ56],[Forms]![フォーム1]![テキスト88],[Forms]![フォーム1]![テキスト8],[Forms]![フォーム1]![テキスト17],[Forms]![フォーム1]![テキスト28]);"

これは正しく動作していますか?

Q秀丸マクロでマクロのURLを開く方法

秀丸マクロでマクロに組み込んだURLをブラウザーで開く方法を 教えてください。
テキストには 何も書かれていない時にです。


http://oshiete.goo.ne.jp/

OSはXPで 既定のブラウザーはGoogle Chromeです。

Aベストアンサー

$url = "http://oshiete.goo.ne.jp/qa/6838098.html";
run "cmd.exe /c start " + $url;

とか。

QLISPのマクロと他の言語のマクロの違い

LISPのマクロは強力と言われていますが、他の言語の言うマクロとはどう違うのでしょうか?

Aベストアンサー

ここでいう「マクロ」は一言で言うと「プログラムを生成する機能」ですね。
例えばCのマクロを例に上げますと、
#define MAX(a, b) (a) > (b) ? (a) : (b)
というようなマクロを定義すると、後に
MAX(10, x)
と書いた際に
(10) > (x) ? (10) : (x)
というプログラムがコンパイル時に生成されます。

Cなどのマクロは、マクロ専用の文法があり、
マクロで書けるものにはある程度の制限が付きます。例えば、
「マクロの引数が定数の際に奇数か偶数かで『生成するプログラム』を変える」
などといった複雑なことはできません。

一方、Lispのマクロは、Lispそのもので書くことが可能で、
任意のプログラムをマクロとして書くことができます。
マクロの中で条件分岐やループなど、なんでも出来てしまいます。
これにより、コンパイル時にマクロの引数の型や値に応じて
生成するプログラムを変えることで最適化を行ったり、
新たな言語機能(と対応する文法)を追加するようなことが可能です。

例えば、昔のLispにはオブジェクト指向の機能がありませんでしたが、
マクロを使うことで、後からオブジェクト指向の機能を付け加えることができました。
また、Common Lispのオブジェクト指向の機能が独特で嫌いな人は、
マクロを使うことでJava風のオブジェクト指向の機能を追加するようなことも可能です。
極端な話、Lispの上で別の言語が作れてしまうわけです。

コンパイル時に任意のプログラムを実行できるという点では、
C++のテンプレートとも似ているといえますが、
C++のテンプレートはテンプレート専用の文法を用いる必要ある点がLispと異なります。
C++をそれなりに書ける人でも、テンプレートで任意のプログラムを書こうとすると、
かなりの苦労を強いられます。テンプレートの文法がC++の文法と異なるのが苦労する原因の一つです。
一方、Lispのマクロは、Lisp自身で書けるため、
Lispが書ける人なら誰にだって書けてしまうわけです。

以上がLispのマクロが強力と言われる要因(の一部)です。
実際に使われてみると色々と実感できると思いますよ。

ここでいう「マクロ」は一言で言うと「プログラムを生成する機能」ですね。
例えばCのマクロを例に上げますと、
#define MAX(a, b) (a) > (b) ? (a) : (b)
というようなマクロを定義すると、後に
MAX(10, x)
と書いた際に
(10) > (x) ? (10) : (x)
というプログラムがコンパイル時に生成されます。

Cなどのマクロは、マクロ専用の文法があり、
マクロで書けるものにはある程度の制限が付きます。例えば、
「マクロの引数が定数の際に奇数か偶数かで『生成するプログラム』を変える」
などといった複雑なことはで...続きを読む

Qエクセルマクロ 「101」 ボタンをおして 「102」となるマクロ?

エクセルです。
一つのセル(A4)に「101」と書いてあります。それをVlookup関数で他のシートから一致する情報を取り出しています。次に同じセルに「102」とうつと、同じように一致する情報を取り出しています。

そこで、一回、一回、セルに102や103と打つのではなく、ボタンを押すと次の番号にうつるようなマクロを組みたいと思ってます。

ただ、101~130 次は、201~231みたいになってます。
一つのマクロでなくても良いので、よろしくお願いします。

最初は、
Range("A4").select 
セルA4を選択 だと思うのですが、この次から分かりません。

Aベストアンサー

Private Sub CommandButton1_Click()
With Range("a4")
If Right(.Value, 2) < 30 Then
.Value = .Value + 1
Else
.Value = .Value + 71
End If
End With
End Sub

参考まで

Qマクロで、質問です。 Find関数を使う時。。 Set FoundCell = Range(”A:

マクロで、質問です。
Find関数を使う時。。

Set FoundCell = Range(”A:A”).Find(Cells(j.code).Row

if FoundCell Is Nothing Then
処理
Else
処理

の場合、(格納が合っているかは分かりませんが…)
見つからなかった場合の処理はせずスルーして
次にまだまだあるコードにうつるには処理のところはなんと記述すれば良いのですか?

Aベストアンサー

nk.knさんが書いたIf文は次のような意味ですよね。

If FoundCell Is Nothing Then
  見つからなかった場合の処理
Else
  見つかった場合の処理
End If

見つからなかった場合、その処理をスルーするのであれば、その処理を書かなければ良いだけです。こんな感じです。

If FoundCell Is Nothing Then
Else
  見つかった場合の処理
End If

でも、普通は次のように書きますね。

If Not FoundCell Is Nothing Then
  見つかった場合の処理
End If


人気Q&Aランキング

おすすめ情報