日頃の疑問や豆知識を調べてまとめました

まとロゴす

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

      2016/02/14

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

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

スポンサーリンク

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

macを中古で買いたい!買うときの注意点

パソコンを買うときにmacかwindowsで悩む人は多いので...

苦手な人も安心!無印のアルバムで写真の整理をしよう

撮りためた写真の整理に頭を悩ませていませんか?大量の写真を整...

人気のLLbean!海外サイトと日本サイトの送料

LLbeanといえばトートバッグが有名な海外のブランドです。...

親子で楽しめる名探偵コナン、アニメと原作

親子で楽しめるアニメの代表名探偵コナン、TVアニメは長い間放...

JCBクレジットカードの引き落としはいつ?延滞してしまった時の対処法

クレジットカードは今や生活必需品となりつつあります。JBCカ...

気になる異性から夜中にメールが!その心理とは

夜中にメールを送る心理は一体何なのでしょうか。その相手が気に...

嵐ファンの情報収集を支える!多くのファンサイトの存在

今や国民的アイドルとなった嵐ですが、そのファンクラブの会員数...

AMラジオが入らない!うまく聞く方法

AMラジオが入らないという事はよくありますね。最近はパソコン...

どこで受ける?浪人生のセンター試験の会場について

大学入試を受ける人は、センター試験対策を早いうちからしている...

事故にあったら!必ず病院で診断書を書いてもらおう

もしも自分が事故にあってしまったら、どうすればいいか知ってい...

ベタの飼育方法、初心者向け

ベタという魚は、鮮やかな色と大きなヒレが特徴ですがお店で見か...

LEDをテープで!車に取り付けてドレスアップ

LEDなどでドレスアップした車を見かけることがありますね。最...

気になる!27歳男性の年収は?

27歳の男性というと就職して数年たち、仕事をバリバリしている...

書類作成時の数字、半角と全角正しいのはどっち?

仕事上で資料などの文書を作る時、数字は半角にしていますか?全...

生理痛で仕事を休む女性のお悩み解決

生理痛は本当にキツイですよね…特に生理が重い人は日常生活にも...

春休みは旅行に行こう!子供連れで海外旅行のススメ

春休みは期間は短いですが、子供達は宿題もなく、のんびり過ごせ...

期間の計算~法律における期間の計算方法

契約書などで目にする「○日を起算日とし」「○ヶ月経過した日か...

夫婦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

ページ
上部へ