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

まとロゴす

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

      2016/02/14

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

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

スポンサーリンク

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

引っ越しの住所変更は車庫証明もしないといけない?

引っ越しをしたら、役所や銀行などに住所変更の届けをする必要が...

キンモクセイってどんな花?開花の時期はいつ頃?

キンモクセイはとてもいい香りのする花です。遠くにいても香りが...

野球で軟式の場合、変化球はどう投げる?

野球には硬式と軟式がありますが、どう違うのでしょうか?硬式と...

中国人のびっくり!?日本の清潔な環境はどうして成り立っている?

日本に来た中国人観光客が驚くことの1つに日本の環境が清潔であ...

警察に住所は教えるべき?家に訪問してくることはある?

もし突然家に警察が訪問したら、何もしていなくても大体の人は驚...

テレビ番組の録画をDVDにダビングするには?

地上デジタル放送になって、テレビの画質は格段に上がりました。...

車の修理費は何になる?簿記の勘定科目について

会社の経理を任されている場合は簿記の資格が必要となります。簿...

高校の友達関係がめんどくさい!どう乗り切る?

高校では友達関係がガラッと変わることがあります。さらに男女と...

中学校の部活のテニスは何故ソフトテニス?硬式とはどう違う?

中学校の部活でテニスを始める場合、そのほとんどの学校の部活が...

野球の軟式と硬式の違いは何?2つの違いを解説!

野球には軟式と硬式があります。この2つはどう違うのでしょうか...

北海道から東京へ就職!その場合に気を付けることは?

地方から東京へ出てきて就職したいと思っている人は多いのではな...

携帯の色は何色を選ぶ?色が性格に与える影響とは?

最近の携帯の色はたくさんの種類があり、どの色を選ぶかで性格が...

アメリカの空港での手荷物検査は厳しい!?最新の事情とは

9.11におきたテロ事件から、アメリカの空港での手荷物検査は...

パスポートの発行にはどのくらいかかる?申請から発行までの流れについて

海外に渡る場合はパスポートが必要不可欠です。しかしパスポート...

警察に住所を聞かれる場合とは?拒否はできる?

職務質問などで、警察に住所・氏名を聞かれる場合があります。中...

テレビはどれがいい?DVD内蔵テレビのメリット・デメリット

最近は液晶テレビの値段も安くなり、手に入れやすくなりました。...

ガンを治療しないということとは?治療しないメリット・デメリットについて

もしもあなたがガンを告知されたらどうしますか?ガンの治療はと...

卒業文集ではどんな言葉を贈る?小学校の先生の場合

小学校で受け持ちの生徒が卒業する場合は感動もひとしおですね。...

ゴルフコンペを開催するには?予約から開催までを解説!

もしも会社のゴルフコンペの幹事を任されたらどうしますか?ゴル...

喪中の相手に年賀状を出してしまった!どうしたらいい?

喪中の場合は年末になると事前にはがきを出して、喪中であること...

スポンサーリンク

●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

ページ
上部へ