日頃の疑問や豆知識を調べて簡潔にまとめています。さらに詳しい内容を知りたい方は引用元でご確認下さい。

まとロゴす

VBA関数の使い方と埋め込みについて

      2016/02/14

VBA関数の使い方と埋め込みについて

Excelで仕事の内容や学校の課題をやる人も多いことでしょう。なかなかうまく使いこなせないのではないでしょうか。様々な関数がある中で、VBAはどのように使用すればよいのでしょうか。今回はVBA関数の使い方と埋め込みについて調べてみました。

スポンサーリンク

  こんな記事もよく読まれています

スカイプの通話の録音で楽々

今は通話は固定電話だけの時代にさようなら。様々な便利なのもが...

楽天カードはどんなカード?審査や時間はどのくらいかかる?

楽天とはは大手通販サイトのことですが、その楽天が発行している...

コンビニの写真プリントはUSBなどがあれば、簡単楽々

コンビニのコピーサービスは素晴らしいですね。コピーだけではな...

バドミントンのラケット選び♪初心者のあなたへ☆彡

休日に、公園や家の前などで楽しそうに遊ぶ姿が見られるバドミン...

どうすればいいの!?弁護士に相談したい時の注意点

最近、CMでも見ることが多くなった弁護士事務所の「無料でご相...

妊娠中の食事はどうする?お勧めの献立

妊娠中の体重管理はとても重要ですね。つわりがおさまってくると...

ビルの屋上にある鳥居は珍しくない

意外と知られていないことは、ビルの屋上に鳥居がある事です。実...

台風が接近!明日の学校はどうなる?

台風シーズンになると暴風や大雨による被害が心配ですね。学生の...

数学の中学教師になりたい!どうすればなれる?

将来教師の道に進みたいと考えている人もいることでしょう。中学...

子供を施設に預けるための条件はあるか

皆さんは児童養護施設がどのような所か知っていますか?最近は漫...

シンガポール空港はスゴい!マーライオンに会いに行こう♪

日本から飛行機で7~8時間。東南アジアの国、シンガポール。空...

幼稚園のバスの運転手になるには?取得する免許

幼稚園の送迎バスを利用している人は多いですね。幼稚園の送迎バ...

恋愛ドラマで感動したい!泣けるドラマ

思いっきり泣いてストレス発散したい!という時ってありますよね...

家庭用電気スイッチをおしゃれに替えて、プチ模様替え

季節の変わり目には、部屋の模様替えをしたいと思いますが、大き...

賃貸契約はなぜ2年なの?更新は家賃や保険の見直し時

賃貸契約の更新の通知をみて、「あぁ、もうあれから2年経ったの...

近視なのに老眼!?コンタクトは使える?

自分は近視だから老眼の心配はない…と思っていませんか?老眼は...

部活の先輩が引退!手紙を贈るならどう書く?

部活でお世話になった先輩が引退するときは今までの感謝を込めて...

ゴルフ場デビューは予約のやり方を教わる事

ゴルフが初心者なのに、ゴルフ場の予約を任されたら不安ですね。...

スワロフスキーストーンのデコセットは初心者でも作れます

大人気のスワロフスキーのデコでオリジナルグッズを作ってみまし...

一人暮らしがしたい!適切な部屋の大きさはどのくらい?

就職や進学で一人暮らしを始める人もいることでしょう。その場合...

スポンサーリンク

●VBAとはなにか

VBAというのは「Visual Basic for Application」の略です。

『Basicを使ってアプリケーションを制御するためのコード(命令など)が書ける。 そしてそれはVisualな環境である』と言うことです。
つまり、 アプリケーションを自動で動かすための言語の中の一つです。
どのような言語かというと、Visual Basicです。
元々VBはWindowsのアプリケーションを作るための言語です。
それをアプリケーションを自動運転させるようにアレンジしたものがVBAです。ですから、VBとよく似ています。
最後の「A」はアプリケーションを動かすためのものであるという意味です。

Basicは、他の言語に比べて習得が容易だ、と言われています。
それは事実であると思います。 しかし、VBAがすぐに使いこなせるほど簡単だと言う意味ではありません。

VBAは主にMS Office製品にくっついてきています。 「マクロ」といえば理解が早い方もいるかもしれません。
しかし、Office製品でで「マクロ」とはホストアプリが自動的に記述されたVBAの事を指しています。

引用元-VBAとは何か

●VBAプログラムを作成する2つの方法

VBAプログラムを作成する方法として、主に「マクロ記録を利用する方法」と「VBAコード(※)を直接記述する方法」の2つがあります。
※VBAプログラムでは、「キーワード」を使用して「ステートメント(1行のプログラム)」を作成し、ステートメントが集まって「プロシージャ(小さいプログラム)」が作成されます。この記事では、これらを総称して「VBAコード」と表記しています。

「マクロ記録を利用する方法」では、「マクロ記録」機能を使用してExcelの操作を記録し、自動生成されたVBAコードを「読んで編集」してVBAプログラムを作成します。この方法は、「Excelの一般的な操作から入ること」「いきなりVBAコードを記述しないこと」「VBAコードを読みながらVBAの文法を学習できること」などの理由から、プログラミング初心者が学習する場合に適した作成方法といえます。

しかし、この方法だと、自動生成されたVBAコードに無駄が多く、「簡単な1行のコード」を作成するために、不要なコードを読んだり削除したりする手間が発生する場合があります。また、より高度で便利なVBAプログラムを作成する上で限界もあります。

「マクロ記録を利用する方法」でVBAのプログラミングに慣れてきたら、「VBAコードを直接記述する方法」に切り替えていきましょう。簡単なプログラムであればサクッと作成できますし、高度なプログラミングも可能になります。

引用元-All About

●EXCEL VBA を使用して、特定のセルにVLOOKUP関数を埋め込むプログラムを組みたい

>「価格シート」の商品名がA列に入っている行のみB列にvlookup関数を埋め込みたいです。
には対応できているとおもいます。

>※「価格シート」に入っていない商品がA列に入っている場合はB列はそのままにしたいです。
>(空白なら空白、何か文字が入っている場合はその文字を採用)
取りあえず、C列に書き込みしています。
そこから切り取ってB列に入れています。

Dim rng As Range
Dim c As Range
Dim fmla As String

Set rng = Sheets(“一覧シート”).Range(“A1:A1000”).SpecialCells(xlCellTypeConstants)
Set rng = rng.Offset(, 2)
fmla = “=VLOOKUP(A” & rng(1).row & “,’価格シート’!$A:$B,2,FALSE)
rng.Formula = fmla
rng.SpecialCells(xlCellTypeFormulas, 16).ClearContents
Set rng = rng.SpecialCells(xlCellTypeFormulas)
For Each c In rng
c.Cut c.Offset(, -1)
Next

≫追記
直でB列に書きこむようにしてみました。

Dim rng As Range
Dim fmla As String
Dim c As Range

Set rng = Sheets(“一覧シート”).Range(“A1:A1000”).SpecialCells(xlCellTypeConstants)
Set rng = rng.Offset(, 1)
For Each c In rng
fmla = “=VLOOKUP(A” & c.row & “,’価格シート’!$A:$B,2,FALSE)”
If Not IsError(Evaluate(fmla)) Then
c.Formula = fmla
End If
Next

引用元-Yahoo!知恵袋

●VBAセルにSUM関数を相対参照で埋め込み変数を使用

最初に、昔、私も「goukei_start_row」のような変数の書き方をしていたことがありますが、ものすごく修正しにくくなりましたので、あまりそのような書き方をしないほうがよいです。インクリメンタルな変数は、i, j, k また、n,m など。また、Row を取って、rw とすれば十分です。今では流行りませんが、lngRow とかいう方法もあります。ブロパティ名や関数名そのものは使わないほうがよいです。×Row, Sum, Str
 私は、「goukei_start_row」という書き方は、ある参考本(九天社)にあったような気がしますが、一度でやめました。

次に、プロパティはつけましょう。ここでは、Formula でよいと思います。FormulaR1C1 は必要ありません。ただし、ローカル(日本版独特=日付式など)の数式が必要なときがあるので、FormualLocal も良いです。

マクロで合計の数式を入れる場合は、
>$を付けず=SUM(J11:J43)のような形にするにはどうすればよいのでしょうか?
ではなくて、本来は、=SUM(J$11:J43) のような形にするのが良いです。そうすると、数式はいつも同じです。

このマクロを試してみてください。

Sub Test1()
  Dim i As Long
  i = 44
  If i > 11 Then
    Cells(i, 10).Formula = “=SUM(R11C:R[-1]C)”
  End If
End Sub

なお、数式の本来の意味が、こういうことでなかったら、見過ごしてください。

引用元-教えて!goo

●最後に入力された次の空白セルに関数を埋め込みたい

ご提示のExcel数式は、そちらの望み通りに書けているものとして、
=IF(DATEDIF(E3,TODAY(),”Y”)>80,”大型中止”,”OK”)
この数式を行のみ相対参照で列は絶対参照でしていしたい、ということだとすると、
VBAでは、
NewDataRow = Cells(Rows.Count, “J”).End(xlUp).Row + 1
Range(“J” & NewDataRow).FormulaR1C1Local = “=IF(DATEDIF(RC5,TODAY(),””Y””)>80,””大型中止””,””OK””)”
のように設定します。

引用元-教えて!goo

まとめ
いろいろなことに使用できるかと思います。知識を身に着け効率を向上させましょう。

twitterの反応

 - 自然・科学・IT

ページ
上部へ