VBAの勉強方法:効果的な学習手法とは?

このQ&Aのポイント
  • VBAの勉強方法について不安を感じている方へ。独学での学習を進めるにあたって、効果的な学習手法をご紹介します。
  • VBAの勉強方法について、具体的な手順をご紹介します。サンプルコードの活用や実際のプロジェクトの作成など、上達に役立つ方法をお伝えします。
  • VBAの勉強方法にお悩みの方へ、効率的に上達するためのアドバイスをします。ネットでの情報収集や、実務での活用方法についても解説します。
回答を見る
  • ベストアンサー

VBAの勉強の仕方

私は独学でVBAを勉強していますが こんな方法で上達するのか不安なので質問します。 自分は、Dドライブに「VBAサンプルコード」と言うフォルダを作り、basファイルを書き溜めています。 【Access】フルパスを取得する.bas 【Excel】フルパスを取得する.bas デスクトップのパスを取得する.bas 【Excel】フォルダを作成する.bas 【Access】ナビゲーションウィンドウを表示しない.bas などです。 そしてwindowsの検索機能を使って使いたい時に引き出しています。 ダブルクリックして開くと ********************************************** Attribute VB_Name = "Module1" Option Compare Database Option Explicit Sub ナビゲーションウィンドウを表示しない() DoCmd.SelectObject acForm, "", True DoCmd.RunCommand acCmdWindowHide End Sub ********************************************** がメモ帳で表示されます。 時間がある時にネットでサンプルコードを見て 「VBAサンプルコード」フォルダにしこしこ追加していってます。 しかしこんなチマチマした作業で上達するのでしょうか? 実際作りたいリストや管理したいデータベースがないので 勉強になりませんが このような方法は皆さん行なっていますか? ご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

コードだけ持っていても、そのコードが対象にするブックなりプロジェクトなりが一緒に無いとお話になりません。 サンプルコードを取り付けたサンプルブックなどを、「覚え書き」フォルダにまとめて放り込んでおく(必要が発生した時に拾って確認する)ようなことはしています。 でもまぁ、必要が発生した時にまたネットで検索したほうが、いろいろヒットして面白い(勉強になる)ので、毎回調べることの方が多いです。

butabuta423
質問者

お礼

コードだけではあまり意味がないようですね。 ネットで検索することも検討します。ありがとうございました。

関連するQ&A

  • VBAの覚え方・勉強の仕方

    自分はVBAを覚える・勉強するために テキストファイルにサンプルコードを作って一つのフォルダに保存しています。 サンプルコードとは Sub ファイル名を取得する() MsgBox CurrentProject.Name End Sub をテキストに書いて保存して、ファイル名を 「Access_自身のファイル名を取得する.txt」にしています。 現在200個くらい作りましたが、 管理ができなくなってきてしまいました。 というのも、同じようなサンプルコードを作ってしまったり、 フォルダ内検索してるのに欲しいコードがヒットしなかったりです。 みなさんはどのようにVBAのお勉強をしているのでしょうか? サンプルコードを作られている方は、どのように管理されてますか? アクセスで「サンンプル管理システム」などを作って管理してるのでしょうか?

  • エクセルのフルパスをvbaで取得

    当方エクセル2003で、 エクセルのフルパスは C:\Program Files\Microsoft Office\OFFICE11\ EXCEL.EXE です。 それをVBAで取得するにはどうすればいいですか? Sub サンプル() Debug.Print 'オフィスがインストールされているフォルダのパスの取得 End Sub のようにして、 C:\Program Files\Microsoft Office\OFFICE11\ EXCEL.EXE を返したいです。 VBAコードをご教示ください。

  • 自動中央寄せを「はい」にしているのに

    アクセス2010です。 自動中央寄せを「はい」にしたうえで Private Sub Form_Load() DoCmd.RunCommand acCmdAppMaximize 'アプリケーションのサイズを最大化する ’ナビゲーションウィンドウを表示しない DoCmd.SelectObject acForm, "", True DoCmd.RunCommand acCmdWindowHide DoCmd.ShowToolbar "Ribbon", acToolbarNo 'リボンを非表示にする としているのですが 中央に表示されません。 該当のフォームは 起動時に開くように設定していて、 フォルダからファイルを開いたときに最初に表示される位置と 手動でナビゲーションウインドウからダブルクリックして開く位置が違います。 コードは同じなのに。

  • サブフォルダの親フォルダを変えたい

    フォルダの中のサブフォルダを取得してくて、 http://officetanaka.net/excel/vba/tips/tips95.htm の --------------------------------------------------------- Sub Sample4() Dim buf As String, msg As String buf = Dir("*.*", vbDirectory) Do While buf <> "" If InStr(buf, ".") = 0 Then msg = msg & buf & vbCrLf buf = Dir() Loop MsgBox msg End Sub --------------------------------------------------------- をやってみたら、サブフォルダを取得できたのですが、 上記のコードを実行すると 元々のフォルダのパスが「C:\Users」で、 「C:\Users」のサブフォルダが取得されてしまいます。 でも上記のコードでは、「C:\Users」は指定してないと思うのですが、 なぜ「C:\Users」のサブフォルダが取得されてしまうのでしょうか? 例えば 「C:\Users」ではなく、「C:\Program Files」のサブフォルダを取得するには、 どのようにコードを書き換えればいいのでしょうか? ご教授よろしくお願いします。

  • Word vbaからexcel vbaへ値を渡すことができますか?

    Word vbaからexcel vbaへ値を渡すことができますか? 現在Wordでvbaを組んでいますが、Wordで取得した値をexcel vbaで利用したいのに変数の値がnullになってしまい四苦八苦しています。Application間で値を渡すには何か特別な処理がいるのでしょうか?(参照は設定済みです) やりたい事は、Wordで「ShipTo」文字列をsearch→後ろの番号を変数へ格納→excel vbaを起動→シートの表中からWordで取得した番号を元に文字列を検索しセルに入れる(VLOOKUPを使用)→セルの文字列をWord vbaへ返しWord側で利用、という処理です。excel vbaの起動は以下のように記述しています。 ------------------excelVBAの起動 Sub getExcelTable() Dim xLobj As Object, myObj As Object Set xLobj = CreateObject("excel.application") xLobj.Visible = True Set myObj = xLobj: workbooks.Open (ThisDocument.Path & "\sample.xls") myObj.Run ("'sample.xls'!getStr") MsgBox strA ←これがでない MsgBox strB ←これがでない Set xLobj = Nothing End Sub -----------------excel vbaのコード Option Explicit Dim endRow As Integer, ShipTo As Variant Dim strA As Variant, strB As Variant Sub getStr() endRow = Range("a65536").End(xlUp).Row MsgBox ShipTo ←これがでない Cells(endRow + 2, 1).Select Selection.Value = "=VLOOKUP(" & ShipTo & ",$A$1:$T$" & endRow & ",3,0)" strA = ActiveCell.Text Cells(endRow + 2, 2).Select Selection.Value = "=VLOOKUP(" & ShipTo & ",$A$1:$T$" & endRow & ",13,0)" strB = ActiveCell.Text End Sub Word vbaからexcel vbaは起動します。Word側、excel側で使う関数はグローバル変数にし、variant型にしてみましたが値がわたりません(Wordでは取得できています)。Application間で値を渡す方法、もしくは根本的にもっとうまい方法があればご教示ください! WinXP、Office2003を使用です。

  • Excel-VBA フォルダの日時を取得・設定

    目的は、Excel-VBAでフォルダのタイムスタンプを「取得・設定」したいのですが、 非力にてクマロの書き方が分かりません。 何方かご教授よろしくお願いいたします。 下記はサンプルコードを探していて、これだと目に留まったのですが、 Excel-VBAマクロで実行するコードに書き直す事ができませんでした。 '--------------------------------------------- 'VB.NET フォルダのタイムスタンプ取得・設定(6個)-(SNo.032) 'http://hanatyan.sakura.ne.jp/dotnet/index.html '--------------------------------------------- 'Sample1.フォルダの作成日時を取得する Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim dt As DateTime dt = System.IO.Directory.GetCreationTime("c:test\") Debug.WriteLine(dt) End Sub '--------------------------------------------- 'Sample4.フォルダの作成日時を設定する Private Sub Button4_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button4.Click 'Directory.SetCreationTime メソッド System.IO.Directory.SetCreationTime("c:test\", DateTime.Now) End Sub '--------------------------------------------- 以上

  • ナビゲーションウインドウを非表示and中央寄せ

    アクセスのフォームの自動中央寄せを「はい」にしてるのですが Private Sub Form_Load() DoCmd.SelectObject acForm, "", True DoCmd.RunCommand acCmdWindowHide End Sub をやり、ナビゲーションウインドウを非表示にしようとすると、 中央によらないのですが、 ナビゲーションウインドウを非表示にしつつ、中央にフォームを寄せることは不可能でしょうか?

  • VBAでのファイルの開き方について

    いつもお世話になっております。(エクセル2010を使用) エクセルVBAを学習中の者です。 ダイアログボックスを表示してファイルを開く・・・というコードを記述しているのですが、分からない点があるためご指導をお願いします。 Sub Sample1() Dim openFileName As String openFileName = Application.GetOpenFilename filefilter:="Microsoft Excelブック,*.xls?" Workbooks.Open Filename:=openFileName End Sub を実行するとコンパイルエラーの構文エラーが表示されます。 Sub Sample2() Dim openFileName As String openFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open Filename:=openFileName End Sub を実行すると正常に動作します。 私の現在の知識ではSample1も正常に動作するはずなんですが・・・ (※コードはVBEをコピペしています) 両者の違いはなんでしょうか?(※スペルの間違いは無いとは思いますが・・・) どうぞよろしくお願いいたします。

  • フォームを開いても真ん中に表示されない

    アクセス2007です。 フォームのプロパティで「自動中央寄せ」を「はい」にして Private Sub Form_Load() DoCmd.RunCommand 10 DoCmd.ShowToolbar "Ribbon", acToolbarNo 'リボンを非表示にする Application.CommandBars("Status Bar").Visible = False 'ステータスバーを非表示にする 'ナビゲーションウィンドウを表示しない DoCmd.SelectObject acForm, "", True DoCmd.RunCommand acCmdWindowHide End Sub をすると、真ん中に表示されません。 ナビゲーションウィンドウ分だけ左に寄ってしまいます。 Private Sub Form_Load() 'ナビゲーションウィンドウを表示しない DoCmd.SelectObject acForm, "", True DoCmd.RunCommand acCmdWindowHide DoCmd.RunCommand 10 DoCmd.ShowToolbar "Ribbon", acToolbarNo 'リボンを非表示にする Application.CommandBars("Status Bar").Visible = False 'ステータスバーを非表示にする End Sub のように順番を前後させても結果は同じです。 真ん中表示だけでなく、アプリケーションを最大化しつつ リボン・ステータスバーを非表示に事は不可能でしょうか?

  • VBAでパスを取得しファイル名を入力するには

    EXCEL2003です。同じフォルダにVBAマクロとデータのcsvファイルがあります。このとき、マクロでパスを取得し、次にcsvファイル名を手入力あるいはそのフォルダの詳細表示からファイルをクリックすればデータを取り込めるようにしたいのですが、どなたかマクロを教えてくれないでしょうか。か。

専門家に質問してみよう