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

まとロゴす

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

      2016/02/14

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

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

スポンサーリンク

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

結婚式の挙式の参列者はどう決めればいい?

結婚式の挙式や披露宴に招待する参列者はどう決めたらいいのでし...

外国人が日本で生活したい理由とは?日本のココが好き!

外国人の中には日本で生活をしている人が大勢います。そんな外国...

免許の写真うつりをよくしたい!撮る時のコツとは?

免許証の写真は自分のタイミングで撮ることができないので、写真...

就職活動の面接で履歴書と違うことを言ってもOK!?

就職の面接では履歴書を見ながら面接官が質問をします。質問の内...

流産で手術する場合とは?失敗することはある?

子供を妊娠してもお腹の中で子供が育たず流産の経験をしたことが...

現代の日本が抱える健康問題とは?

日本は世界でも平均寿命が長い国としても有名です。しかしそんな...

彼氏の身長はどのくらいが理想?背が低い男性の魅力とは?

理想の彼氏の条件として、自分より身長が高い人を上げる人は多い...

皮膚に湿疹ができてかゆい!原因と対処法は?

皮膚に湿疹ができる原因には様々ものがあります。湿疹ができると...

中学校の部活は生徒も先生も大変!?土日は休みにするべき!?

中学校に入ると部活に入った人は放課後に部活動に参加して、試合...

高齢者の病院への入院期間は最大で3ヶ月?その理由とは?


病状次第では病院へ長期の入院を余儀なくされる場合...

舌に口内炎ができて痛い!対処法はどうしたらいい?

食べ物を食べたりしたときに舌が痛い時は口内炎ができている場合...

神社に参拝する意味とは?作法の意味を解説!

神社へは初詣などで一年に一回は参拝に行くのではないでしょうか...

口座を解約するには?残金はどうなる?

知らない間に何年も使っていない口座はありませんか?この休眠口...

月、太陽、地球の大きさはどのくらい?大きさを比べてみよう!

地球から見える月や太陽の大きさはとても小さく見えますが実際は...

家のキッチンをタイルでオシャレに!自分でタイルを貼ってみよう!

家の中でこだわりたい場所の1つといえばキッチンですね。タイル...

ニキビの原因はできる場所によって違う!?顔まわりのニキビの原因と対処法を紹介!

顔にニキビができると気になるので早く治したいですね。ニキビは...

アプリが有料の場合は毎月料金を払う?

スマホを利用している人は必要なアプリをダウンロードして使って...

高校で友達ができなくて楽しくない場合はどうしたらいい?

中学から高校へ進学すると環境がガラッと変わります。中学まで一...

まぶたの一重、二重は遺伝する?遺伝の法則とは?

まぶたには一重の人と二重の人がいますね。日本人は一重が多いよ...

インフルエンザを予防するには湿度が大事!?適度な湿度とは?

冬になるとインフルエンザにかからないように注意しないといけま...

スポンサーリンク

●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

ページ
上部へ