• ベストアンサー

VBAとマクロ

お世話になります。田吾作7です。 ふと思ったのですが。。。 VBAとマクロの違いって何でしょう? 「マクロの記録」ボタンを押したのがマクロですか? VBAは、MS-Officeのモジュールにユーザ自身が書き込んだら、それはVBAですか? もしそうなら、[マクロの記録]ボタンはなぜ[VisualBasicツールバー]にボタンがあるのでしょうか。マクロを編集しやすくするためでしょうか? 記録で Range("A1").select それを編集で Range("A2").select としたらVBA? さらに最初っから Range("A2").select と記録したマクロは、やっぱりマクロ? VBAとマクロって違いあるのでしょうか? いつも疑問に感じて、モヤモヤしてます。 だれか、このモヤモヤ感を解消してください。 よろしくお願いします。 余談ですが・・・ VBAは[VB for Application]ですよね? Office関連のためのVBってことですよね。 でもAPIを使ってWINDOWSを制御することもできるから[for App]の意味が無いような気がする今日この頃・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • sienna
  • ベストアンサー率35% (51/145)
回答No.1

マクロという言語があるわけではないので 決まった処理を登録しておいて後で実行できる機能を マクロと呼んでいるんじゃないですか? そのマクロの情報をスクリプトとして保存しておきますので そのスクリプトがVBAという事だと思いますが。

TAGOSAKU7
質問者

お礼

ありがとうございます。 なるほどー ほぼ解決です。 それならば、アクセス以外の「マクロ」は、VBAという呼び方をしても問題ないのでしょうか?

その他の回答 (1)

noname#1296
noname#1296
回答No.2

恐らく昔の流れで名前が残っているだけではないかと思っています。OfficeにVBAが搭載される前は(その当時は使っていませんでしたが)マクロという呼び方をしていましたので。その頃は今のVBAとも全く違うものだった筈です。 Accessだけ未だにマクロというVBAとは別に仕組みがあるのもかえって混乱しますよね(笑)

TAGOSAKU7
質問者

お礼

ありがとうございます。 確かにWIN3.1時代のエクセルに、そんなものがあったような。。。 もしあったとしても、間違ってマクロシートを出しただけで、一度も使用したことがなかったはず。(笑) すっかり忘れてたし。。。 これで全て解決です。 ここに書かせてもらいますが・・・解答を下さった方々へ 困り度1なのに、これほど早いレス、ありがとうございました。 またよろしくお願いいたします。 どちらも望んでいた回答なので、両方に同じ得点を付けたいのですが、そういうわけにもいかないので、申し訳ありませんが、先着順に点をつけさせていただきます。 本当にありがとうございました。

関連するQ&A

  • VBAの考え方からVisualBasicへ

    いつもお世話になっています。 約半年ほど前よりエクセルのVBAを勉強し始めまして 機会がありVisualBasicを覚える事になりました。 会社の先輩が作ったVB6のコードを見ていたのですが やっている事が何となくわかる様なわからない様な・・・ という感じです。。 例えばエクセルでは(A1~A20までのセル)、VBでは同じようにグリッドにデータが入力してあり 選択しているセル(A1)のデータと一致するセルを含む行又はレコードを選択するという処理があったとします。(あくまでも例です) エクセルでもVBでもFor~Nextが使える事はわかったのですが 対象とする目印?的なものの(基準というか考え方というか)が理解出来ないのです・・・・。。 エクセルだとcells(rows.count,1).end(xlup).rowで最終行を取得して For~NextでIf Range("A1").value = cells(i,1).value then・・・ で処理できますがVBではどうなのかとか・・・・ (説明がめちゃくちゃですみません。。泣) 同じようにVBAからVisualBasicを始めた方! VBAでのプログラミングの考え方とVisualBasicの考え方の違いや どういう風に勉強していけば良いか等、アドバイスや経験談等を教えて頂きたいです。 宜しくお願い致します。

  • エクセルのグラフをマクロで縮小化したい

    office2007。Vistaを使用。 エクセルのグラフを縮小するマクロを記録ボタンで作成しました。画面上は縮小されるのですが、「マクロの記録」ではそれが記録されません。office2003で作成したときは zoom を使用したような気がしますが、2007ではどうしたらよいのでしょうか?お教えください。A1B5 にデータが入っています。 Sub Macro1() ' Macro1 Macro Range("B2").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("'Sheet1'!$A$1:$B$5") ActiveChart.ChartType = xlColumnClustered ActiveChart.Location Where:=xlLocationAsNewSheet ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate Sheets("Sheet1").Select Range("A1").Select End Sub

  • マクロでセルのセレクト範囲を変更する方法

    マクロの記録を使って、部分的に編集して使っています。 以前BASICをやっていたので、若干理解できる部分があります。 教えていただきたいのは、例えば Range("A1").SelectのA列1行目の行の部分を for i =1 to 10 として、1行目から10行目までを順次セレクトする方法を教えてください。 よろしくお願いいたします。

  • エクセルVBA:マクロの中にマクロ?

    度々よろしくお願いします。ボタンが複数あって、それぞれに記録されたマクロの一部分が共通している場合の処理について教えてください。 例えば、前回の質問でご回答いただいたモノを流用し、別の処理と複合させたマクロがあります。 この変数ixがボタン(それぞれのマクロ)ごとに異なる場合、Do While以下を別のマクロとして記録し、それぞれのマクロの中で Application.Run "TEST.xls!Macro1"などのようにできるのでしょうか?変数の扱いをどうして良いのかわかりません。 Sub test() ~別の処理 ix = 8 Do While Cells(ix, "D") <> ""   Select Case Trim(Cells(ix, "D"))   Case "背筋"     Range("AZ8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW"))   Case "アーム"     Range("BA8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW"))   Case "レッグ"     Range("BB8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW"))   End Select   Range(Cells(ix, "I"), Cells(ix, "AW")).Copy   Cells(ix, "I").PasteSpecial Paste:=xlPasteValues   ix = ix + 1 Loop Range("I8").Select End Sub

  • マクロとVBAの違いは?

    最近officeのVBAを勉強してるのですが「マクロ」と「VBA」って何が違うのでしょうか? アクセスはマクロとVBA(VBE)が別れてるけど、 エクセルは「マクロの記録」でVBAコードが取得できますよね。 マクロとVBAは同じ意味なのか、違う意味なのか教えていただけますか?

  • VBA_マクロ内でマクロ実行

    独学でVBAをやってる初心者です。 よろしくお願いします。 EXCEL2003を使ってます。 例) <A.xlsファイル> Sub File_A () Workbooks.Open Filename:="B" Call File_B Range("A1").Select Selection.Paste End Sub <B.xlsファイル> Sub File_B () Range("A2:T5").Select Selection.Copy End Sub A.xlsファイルを開きマクロFile_Aを実行させると B.xlsファイルのマクロFile_Bを実行することができません。 どうしたらうまく実行できますか? 教えてください。

  • Excel2002(xp)でマクロやVBAが使えない

    起きている症状は、 Excel2000で作成したマクロを、Excel2002で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう? VBAプロジェクトのライブラリファイル参照がうまくいっていないということはわかるんですが、VBエディタの[ツール]>[参照設定]がグレーで開くことができません。 みなさんのお知恵をお貸しください。

  • エクセルのマクロについて

    エクセル97でマクロを組んで下記作業を行いたいと考えていますが(実際にやりたい事から抜粋した内容です)、不具合が起こっています。 ~やりたい事~ コマンドボタンを押すとあるシートのセルをコピーして、違うシートに貼り付ける。 ~不具合内容~ (1)普通にマクロを実行すると問題ないが、(2)コマンドボタンを使用するとエラーが起こる。 エラー内容は、 「実行時エラー'1004' RangeクラスのSelectメソッドが失敗しました。」 と言う内容です。 ~(1)のVB表記~ Sub Macro1() Sheets("sheet1").Select Range("A1").Select Selection.Copy Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~(2)のVB表記~ Private Sub CommandButton1_Click() Sheets("sheet1").Select Range("A1").Select (←ここでエラーが発生します) Selection.Copy  Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~質問事項~ 1)(2)の表記の何が原因でエラーが起こっているのでしょうか? 2)エラーが起きない為にはどのようにしたら良いでしょうか?

  • エクセル VBAマクロ セルの単純移動

    基本的な質問ですが、よろしくお願いします。 エクセルのVBAで、Selectセルを1つだけ上下左右に移動させることを ”汎用的に書く”としたらどのようにすれば良いでしょうか? 例えば、Selectセルを一番上や、一番下、へというのであれば、 Selection.End(xlUp).Select Selection.End(xlDown).Select 一番右や、一番左なら、 Selection.End(xlToRight).Select Selection.End(xlToLeft).Select のように書いて、実行できます。 それでは、今いる所のすぐ隣りのセルへ移動させるということを 同じように表現するには、どのようにしたら良いでしょうか。 事の発端は、 マクロの自動記録を使って、セルを移動していっても、 Range("A1").Select Range("B1").Select Range("B2").Select Range("C2").Select Range("C3").Select : のように、絶対セル位置で記録されてしまうため、 同じような処理を順に隣りや後の行・列に向かって繰り返すような処理を 書こうとしたときに、汎用的には動いてくれないところからです。 参考になるページを自力では見つけられませんでした。よろしくお願いします。

  • マクロの実行とコマンドボタン

    office2000、WIN98SEです。 マクロの記録でマクロを作成しました。 これをコマンドボタンにコピペして実行するとエラーになります。マクロの実行から動かすとなんの問題もありません。なにがいけないんでしょう。教えてください。 ちなみにやりたいことは、複数のシートの同じセルを一気にクリアにしたいです。 記録したマクロは以下の通りです。宜しくお願いします。 Sheets(Array("用紙(1)", "用紙(2)", "用紙(3)", "用紙(4)")).Select Sheets("用紙(1)").Activate Range("B9").Select ActiveWindow.SmallScroll Down:=36 Range("B9:C58").Select Selection.ClearContents Range("F9").Select ActiveWindow.SmallScroll Down:=36 Range("F9:G58").Select Selection.ClearContents Range("I9").Select ActiveWindow.SmallScroll Down:=36 Range("I9:I58").Select Selection.ClearContents Sheets("用紙(1)").Select Range("B9").Select End Sub

専門家に質問してみよう