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

まとロゴす

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

      2016/02/14

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

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

スポンサーリンク

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

もう遅い!?離婚後に後悔する理由 女性の場合

離婚は昔に較べて珍しいことではなくなり、今や3組に1組のカッ...

部屋の片づけ、模様替えのコツ!

部屋のレイアウトも飽きてきたし、そろそろ模様替えをしようかな...

地震でマンションが倒壊!?日本は大丈夫?

大きな地震が起きたときにマンションは倒壊の危険はないのでしょ...

運動の効果はいつ実感できる?

ダイエットを始めても、体重は殆ど減りません。いつ効果が表れる...

CDの音質を向上させる方法

安価なCD。安価なCDプレーヤー。パソコンで。CDを聴く方法...

年末年始はお得?テレビの購入時期について

テレビの購入を考えている場合、どの時期に買えばいいか悩みます...

既婚者の男女の友情は有り得るのか?

既婚者の男女の友情は有り得るのでしょうか?これは永遠の課題で...

コンビニひきたてコーヒーの頼み方を教えてください

今や人気沸騰のコンビニコーヒー。ひき立ての香りとお値段の安さ...

前立線の肥大する病気の症状は?

男性の特有の病気に前立腺の肥大があります。よく話題になると思...

家の掃除はどうやっている?効率的な手順とは

家の掃除を毎日するのは大変ですね。しかし掃除をしないと汚れは...

新入社員の厳しい現実!証券会社の営業とは

証券会社の仕事は厳しく離職率は7割といわれています。そんな証...

全商の検定とは?正式名称はどう書く?

全商検定を知っていますか?全国商業高等学校主催の検定で現在は...

事務の仕事を効率化したい!そのポイントは?

事務の仕事は企業によってその内容は異なるようですが、単調な作...

LINEのタイムラインは公開する人を限定できる!?マークの意味とは

LINEとはトークや通話などができる無料のアプリですがタイム...

玄関の鍵を交換したい!おすすめの鍵は?

現在玄関の鍵には様々な種類があります。古い鍵は鍵をかけていて...

社会保険と雇用保険って何?二つの保険の違いとは

求人表などに書いてある社会保険完備とはどういった意味なのでし...

家のローンに後悔!?返済に苦労しないために

家を購入した場合は住宅ローンを組む必要があります。長い年月ロ...

英語の家庭教師をしたい!教え方のコツとは

家庭教師で英語を教える場合の教え方のコツはあるのでしょうか?...

イギリスの通貨はポンド!なぜユーロでないのか

イギリスはEU加盟時も通貨はユーロではなくポンドでした。なぜ...

小学校の担任はどう決まる?担任の決め方

子供が小学校に行っている場合、担任がどの先生になるかは親にと...

スポンサーリンク

●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

ページ
上部へ