はじめての親子ハイキングに挑戦!! >>

仕事でExcelの関数は比較的よく使っていますが、
VBAを使うと、関数の利用に比べて何が便利なのでしょう?
また、みなさん通常どうやってVBAを学ばれていますか?
教えてください。宜しくお願い致します。

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

A 回答 (5件)

No3です。


マクロの記録も結構便利な機能ですが
ここまででは 定型的な業務の効率アップになりますが

記録されたVBAに手を加えることで更に便利に出来ます。
次は Do Loopの使い方 Select Caseの使い方を学ばれてはいかがでしょうか?
マクロの記録では出来ない様な機能を追加できます。

更には ユーザーフォーム の作成に進むとVBAの実力を知るところになります。入力作業が大幅に改善できるでしょう。

次は ファイルの操作、ほかアプリケーションとの連携について学んでみます。
データベースはAccessで 集計、グラフはExcelで VBAでメールを送る
などできる様になります。
定型的な業務から Excelに自分の希望する機能を追加できる
といった具合になると思います。
    • good
    • 0

ANo.1です。



>VBAは個別データを重視したデータベース関係を扱うのが得意ということでしょうか?
>逆に、データの一覧性を重視するシートであれば、関数でも十分な感じですか?
私は入力用シートとデータ蓄積用シートを作成し、入力では常に新しい
データを打ち込んでボタンを押して別シートに蓄積し、入力シートを
クリアするというものです。

ユーザーフォームを用いた方はAccessのmdbファイルからデータを
読み込んで、表示させるという方法を取りました。
入力はAccessで行なっていました。
(社内での共有の手段として、Excelで表示のみを目的に作りました)
    • good
    • 0

ここは ためになりますよ。


http://www.asahi-net.or.jp/~ef2o-inue/menu/menu0 …
最初にマクロって何
について説明して有ります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
マクロの自動記録機能(動作の記録)は何度か使ったことがあるのですが、定期的に同じ動作を繰り返すという作業そのものは少ないので、利用頻度自体はそれほど高くない状況です。
マクロの自動記録機能の限界を調整するのがVBAと考えてもよいのでしょうか?

お礼日時:2008/08/09 19:29

現状で困っていないのなら、特に気にされなくてもいいとは思います。


何が便利か?は説明がつかないほど便利です。必要な人にとっては。

仮にですが、顧客情報リスト.Xlsがあったとします。
顧客名/住所/電話番号/メールアドレス/親密度という項目を持っています。

これを親密度によって文章・送信者を変え、メールアドレスがある場合はメールで、メールアドレスがない場合は住所にハガキで、暑中見舞いをだすことになりました。(どちらも情報がないところはそれをリストアップする、、、)
せっかくなので、これを機にそのリストをACCESSを使ってデータベース化もやりたいです。

この一連の処理のうち、メールを送信する/葉書をプリントアウトする/対象外のリストアップしたテキストファイルを作成する/ACCESSにデータベース登録/までをVBAでやれと言われれば比較的簡単にできます。今回は外部との連携を紹介しましたが、内部的なことも当然VBAを使うのと使わないのでは相当利便性がことなります。

(エクセルのスプレッドシートで通常使用する)関数ではどうでしょう??

VBAならばそこまで(というかもっとすごいことまで)できます。
中にはゲームを作られる方もいます。私もエクセルで数独の問題を解くプログラムを作ったことがあります。

VBAは私の場合はACCESSで覚え始めたのですが、最初は「AccessVBA によるデータベース作成」みたいな初心者本+「AccessVBA2000リファレンス」という分厚い本+ヘルプでいろいろ試しながらやりました。必要に迫られると覚えるのも早いようです。

VBAがわかるとVBSとかVBも比較的習得が楽です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
VBAが得意とするのは「定期的に発生する動作の記録」ということでしょうか?

お礼日時:2008/08/09 19:32

過去には、


・数式では参照元が変更されると値が変更されるが、VBAでは値を代入することで変更を防げる。
(例:データベースの作成)

・ユーザーフォームを用いてデータをシートではなく任意の状態で表示できる。
(例:データベースの検索結果の表示)

>通常どうやってVBAを学ばれていますか?
・参考書の購入
・こちらを含め色んなQ&Aでの他の方の回答をテキスト等でファイリング
・参考となるサイトの検索&お気に入り登録

と言った感じです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

VBAは個別データを重視したデータベース関係を扱うのが得意ということでしょうか?
逆に、データの一覧性を重視するシートであれば、関数でも十分な感じですか?

お礼日時:2008/08/09 19:26

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

QVBとVBAの違い

お世話になります。

現在、ExcelVBAで機械設計の計算をさせようと思い勉強しているのですが、VBとVBAの違い(VBと比較したとき、VBAできること、できない事)の境目?がいまいち判りません。
まだまだ勉強中で困惑しております。このままExcelVBAを勉強していく物か、VBについて勉強していくか迷っています。このままExcelVBAを勉強してExcelVBAを理解すれば判断できるかと思うのですが、畑違いの勉強になってしまわないかと心配です。

やりたいことは、各種計算の簡略化です。
現在は、関数電卓で行っていますが、これをパラメータを入力すると計算結果が出る。このような物を作りたいと思っています。

長くなってしまったのでまとめると、
1、VBAとVBの違い
2、ExcelVBAで設計計算が可能か
あと、
プログラムにより計算させるときに、最適なプログラム(JavaとかPHPとかHTML等など・・・)お勧めのプログラムがありましたらアドバイス頂けたらと思います。

Aベストアンサー

1. VBAとVBの違い

VBは単体で動作するアプリケーションが作れますが、VBAはOfficeが必要です。
また、VBAはOfficeの環境が使えるので、Excel等を使った入出力の機能が既にできていますが、VBではある程度自分で作る必要があります。また、費用的な面でVBは購入しないと使えませんが、VBAはOfficeがあれば使えますので、既にExcelなどを導入されているならば、追加の費用が必要ありません。
もし、複数の人間で作ったプログラムを利用され、かつその中にOfficeを持っていない人が含まれるのであればVBAではできませんので、VBが必要です。

2. ExcelVBAで設計計算が可能か

可能です。また、多分VBAを使わなくてもExcelの関数でもある程度のことが可能だと思われます。お持ちの関数電卓の桁数にもよりますが、相当な高精度が必要でない限り大丈夫です。

文面からすると、プログラミング未経験のようですが、やりたいことが明確なので、Excelをお持ちであればVBAで始めてみてはいかがでしょうか。他の言語(Java, C, PHP...)でも可能でしょうが、中には環境を用意しなくてはならなかったり、本質である計算以外に気にしなくてはならないことが多く、初心者にはとっつきづらいのではないかと考えます。

VBAからVBへの移行、VBからVBAへの移行はどちらも可能ですし、VBAからVBへの移行は多少時間がかかるかもしれませんが、VBよりVBAから始める方が楽なので、どちらに優越があるとは一概に言えないと思います。一人でちょっと使う程度や勉強用なら、ExcelVBAをお勧めします。
しばらくすると、ExcelVBAの限界を感じるようになると思うので、そこからVBに移行するというのでも悪くないと思います。

1. VBAとVBの違い

VBは単体で動作するアプリケーションが作れますが、VBAはOfficeが必要です。
また、VBAはOfficeの環境が使えるので、Excel等を使った入出力の機能が既にできていますが、VBではある程度自分で作る必要があります。また、費用的な面でVBは購入しないと使えませんが、VBAはOfficeがあれば使えますので、既にExcelなどを導入されているならば、追加の費用が必要ありません。
もし、複数の人間で作ったプログラムを利用され、かつその中にOfficeを持っていない人が含まれるのであればVBAではで...続きを読む

QINVOICE(インボイス)ってなんですか?

質問するのが場違な場所だったらすいません(x_x)

仕事で、インボイスという言葉を耳にするのですが
今いちなんのことなのか分かりません。

請求書?なのでしょうか。

海外へ部品を発送時に、発行されるもの?
発送した後に発行されるもの?

どうか、頭の悪いわたしに
分かりやすくおしえていただけると助かりますm(--)m

Aベストアンサー

こんにちは。

#2の補足です。
日経新聞社の流通用語辞典ではこんな風になっています。

「インボイスinvoice
 商品を輸出する際の*送り状。売り主(輸出業者)から買い主(輸入業者)あてに出す書類で,売買契約の条件を正当に履行したことを記す。商品名や数量,単価,代金の支払い方法,運賃,*保険料などの明細通知書でもある。買い主は輸入品の仕入れ書として税関に提出する」出典:日本経済新聞社 流通用語辞典

業種によっても、企業によっても呼び方が異なるものでしょうが、基本的にはこんな感じではないでしょうか。

ご参考まで。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QVBAで指定したシートの指定したセルに

VBAで指定したシートの指定したセルに
何かを書き込む場合どうすればいいのでしょうか?


Sheet1に配置されてあるボタンをクリックしたとき
Sheet3のC1に"AAA"を書き込みたい。

Aベストアンサー

こんばんは

Sub Sample()
Worksheets(3).Range("C1").Value = "AAA"
End Sub

で出来ます。

起動ボタンは「オートシェイプ」や「フォームのボタン」で「右クリック-マクロの登録」で作ることが出来ます。



ご質問の内容は非常に基礎的です。まずは書籍やウェブサイトなどで基礎をきっちりと学ぶことをお勧めします。

Qワードやエクセルで線をまっすぐ引く方法

ワードやエクセル、パワポなどで、まっすぐな線を引きたい場合、「挿入」→「図形」で線を引きますよね?
そのときに、いつも微妙に斜めになってしまいます。
十字型になるカーソルでピーっと線を引きますが、途中でぶれて、線が斜めに太くなってしまうというか。。(←わかりますか?)

どうしたら、まっすぐな線を引けますか?
私はいつもは、まっすぐな線を引けたものを何度もコピペして使ったりしてますが、もっといい方法があれば教えてくださいm(_ _)m

Aベストアンサー

既に、正解が出ていますが、図形を描画する、または、修正する場合、「Shift」キーを押しながら操作すると、色々便利なことがあります。

・「直線」を引く時、水平・水平・45度の斜め線が引けます。
・「四角形/長方形」、「円/楕円」などでは、正方形や真円が描画出来ます。

・図形を「拡大」/「縮小」する場合は、「相似形」で拡大/縮小出来ます。

・図形をマウスでドラッグして、「移動」/「コピー」する時、水平/垂直に、「移動」/「コピー」出来ます。
・図形をマウスでドラッグして、「回転」させる時、15度刻みに回転させることが出来ます。

など、色々な場面で試してみて下さい。

なお、Office 2007には、少し問題がありましたので、ご注意下さい。

「Excel2007(エクセル2007)Q&A(Tips):直線(水平線/垂直線)をShiftキーで伸ばすには?」
http://www.eurus.dti.ne.jp/yoneyama/Excel2007/FAQ/line.html

QEXCEL(IF関数)でCELLの色を変える。

例えば、IF関数で真ならセルの色を赤色にしたり、文字の色を変えたりする関数とかはあるのでしょうか?わかりません・・・知ってる方いらっしゃれば教えて下さい。

Aベストアンサー

こんばんは。

関数ではありませんが‥

<条件付き書式>ではダメなのでしょうか?

メニュー<書式>-<条件付き書式> です。

どのような条件を想定していらっしゃるのかわかりませんが、
<条件付き書式>については↓の参考URLをご覧ください。

▽条件付き書式・その1
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu4.htm

▽条件付き書式・その2
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu5.htm

参考URL:http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu4.htm

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセル:シート名を手入力でなく、セル「A1」の文字を出したい。

いつもお世話になります。
エクセルのシート名についての質問です。
いつもはシート名を変えるとき、シートタブの上を右クリックして「変更」しています。

◆そこで、
(1) セル「A1」に入力されてある文字を自動で出す
(2) もしくはマクロボタンを押すと「A1」に入力されてあるものが「シート名」として変わる

というようにしたいのですが、その方法について教えてください。よろしくお願いいたします。

Aベストアンサー

こんにちは。


(1)の場合は、下記のコードを ThisWorkbook に記述してください。
どのワークシートでも機能します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value
End Sub


(2)場合は、下記のコードを標準モジュールに記述しボタンにマクロ登録してください。
(すべてのシートにボタンを貼り付けるのは面倒でしょうから、ツールバーにボタンとして追加すると良いと思います。)

Public Sub SheetName()
ActiveSheet.Name = Range("A1").Value
End Sub

Qエクセルで1行ずつ交互に色をつけるには

仕事でエクセルを使用していますが、
細かい表を作る時に量が多いと見づらくなってしまうので
一行ずつ交互に色をつけることがあります。
今はシフトキーを押しながらマウスで一行ずつ選択していますが、
どうにか簡単にその処理をすることはできないでしょうか?
何かいい方法をご存知でしたらご教示ください。
よろしくお願いします。

Aベストアンサー

n行おきに色をつけるなら
http://www.microsoft.com/japan/users/office_expert/200208/04.asp

http://www.atmarkit.co.jp/fwin2k/win2ktips/328cellstyle/cellstyle.html
で解説されている方法が、行の挿入にも対応していてiいいと思います。

行を挿入しないのでしたら、
1.一行色をつける
2.色をつけた行とそのすぐ下の行を選択
3.フィルハンドルで右クリックからドラッグして「書式のみコピー」
が一番カンタンだと思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング