[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

VBAに関するfumokmmのブックマーク (75)

  • VBAでFunctionとProperty Getを使い分ける理由 - えくせるちゅんちゅん

    VBAの Function と Property Get は非常に似ています。 検索して出てくる説明では、両者を何故使い分けているのか、今ひとつシックリこない人が多いと思います。 そこで、私がなぜプロパティを使い分けているのか説明します。 プロパティとは Property Get と Function で何が違うの? 1. アイコンが違う 2. ローカルウィンドウに表示される 3. Callできない 4. 値の設定にも同じプロシージャ名が使える プロパティの注意 1. ブレークの度にプロパティが走る 2. 別にクラスを使わなくても良い 3. プロパティにも引数を持たせられる まとめ プロパティとは プロパティとは何か、強引に一言で説明すると「超すごい変数」です。 なぜなら、皆さんはすでに、変数もプロパティも意識せずに使ってます。 '変数vを宣言 Dim v As Variant '変数vに

    VBAでFunctionとProperty Getを使い分ける理由 - えくせるちゅんちゅん
    fumokmm
    fumokmm 2021/08/30
    なるほど。ブレークの度にプロパティが走るのきついな…。
  • VBAからPowerShellを起動し、任意コマンドを実行する - Qiita

    Option Explicit Sub TestPs() Dim sPath As String Dim dPath As String Dim psCmd As String Dim hoge As Variant sPath = "C:\work\hoge.txt" dPath = Replace(sPath, "hoge", "huga") psCmd = "Copy-Item " & sPath & " " & dPath hoge = runPshell(psCmd, 0, True) End Sub コメント 参照設定をユーザに操作させたくなかったのでCreateObject("WScript.Shell")を使っています。 変数intVsblでPowerShell画面の表示(1)/非表示(0)を選択できます。 変数waitFlgでPowerShell実行完了を待つ(True)

    VBAからPowerShellを起動し、任意コマンドを実行する - Qiita
    fumokmm
    fumokmm 2021/07/26
    なるほど、これは良さげ。
  • VBAで複数のセルが選択されているかを判定する:Excel VBA Rangeオブジェクト

    Sub 複数のセルが選択されているかを判定する() If Selection.Cells.Count = 1 Then MsgBox "1つのセルが選択されています。" Else MsgBox "複数のセルが選択されています。" End If End Sub Areas.CountとCells.Count Areas.Countの場合はセル範囲の数、 Cells.Countの場合はセルの数が取得できます。 Range.Areasプロパティは、セル範囲のひとかたまりを1つのItemとして持つ、コレクションとしてのRangeを返します。 Range.Cellsプロパティは、個々のセルをItemとして持つ、コレクションとしてのRangeを返します。 Selection.Cells.Countではなく、 Selection.Countでも、複数のセルが選択されているかを判定できるはずですが、私はこ

    fumokmm
    fumokmm 2021/04/15
  • スピルでVBAの何が変わったか|VBA技術解説

    公開日:2020-02-03 最終更新日:2021-08-27 スピルでVBAの何が変わったか Office365にスピルが登場し、2020年1月にはXLOOKUPもリリリースされ、ますますエクセルが便利になってきています。 スピルは、これまでにないくらい大幅な機能変更と言えるでしょう。 スピルの一般的な説明については以下を参照してください。

    スピルでVBAの何が変わったか|VBA技術解説
    fumokmm
    fumokmm 2021/04/15
    スピル!
  • PropertyのSetはLetでも良い|VBA技術解説

    公開日:2021-03-31 最終更新日:2021-03-31 PropertyのSetはLetでも良い クラス等にプロパティを作成する場合、 Let Set Get この3種類があります。

    PropertyのSetはLetでも良い|VBA技術解説
    fumokmm
    fumokmm 2021/04/15
  • Excelでチェックボックスの背景色を透明にするにはどうすればよいですか?

    通常、Excelのセルにチェックボックス(ActiveXコントロール)を挿入すると、チェックボックスの背景色が下のスクリーンショットのようにワークシートの塗りつぶし色を覆います。 ワークシートの背景色全体を表示するには、チェックボックスの背景色を透明に変更する必要があります。 そして、この記事では、この問題を解決するためのVBAメソッドを提供します。 チェックボックスの背景色をVBAコードで透明にします チェックボックスの背景色をVBAコードで透明にします チェックボックスの背景色をVBAコードで透明にするには、次のようにしてください。 1.ワークシートに、透明にするために必要なチェックボックスが含まれている場合は、を押します。 他の + F11 キーを同時に開いて アプリケーション向け Microsoft Visual Basic 窓。 2。 の中に アプリケーション向け Microso

    fumokmm
    fumokmm 2021/04/15
  • 本来なら文字列として入力されているデータを、計算式の中で使える「セルのアドレス」に変換してくれる - ワークシート関数の解説(INDIRECT関数) excel ★

    書式 たとえば、任意のセルに「=A1」と入力すれば、そのセルからセルA1を参照できます。 INDIRECT関数を使うと、次のように、参照するセルのアドレスを文字列で指定できます。 「なんじゃ、そりゃ?」「はぁ?何に使うの?」と思ったあなた。その通りです。これだけだと、この関数がどれほど便利か分かりませんね。ポイントは、参照するセルのアドレスを文字列で指定できる、というところです。文字列で指定できるということは、参照したいセルのアドレスを、何とかして文字列で作成できれば、どこにあるセルでも参照できるということです。これ、超便利です。てか、INDIRECT関数を使えるようになると、Excelの数式作成スキルが256倍アップします(当社比)。 アドレスを文字列として作れればいいのですから、たとえば、文字列を結合できる&演算子を使って、次のようなこともできます。 文字列の"A"と数値の2を結合して

    fumokmm
    fumokmm 2021/04/15
  • Excelのマクロを外部に吸い出して保存するバッチ (WSH/JScriptで,VBAのソースコードだけを抜き取る) - 主に言語とシステム開発に関して

    バッチ・マクロのTOPExcelから,VBAのコードを吸い出すバッチ。 モジュールごとに,(モジュール名).bas の名前で保存される。 以下のスクリプトを実行すればよい。 vacuum_vba.js /* Excelからマクロの全モジュールを外部に吸い出すバッチ */ // excelのファイル名と,モジュールの吸出し先パスを指定 var file_dir = "D:\\temp"; var file_name = "hoge.xls"; var file_path = file_dir + "\\" + file_name; var vacuum_dir = file_dir + "\\macros"; // ブックを開く var excel = WScript.CreateObject("Excel.Application"); excel.Visible = true; exc

    Excelのマクロを外部に吸い出して保存するバッチ (WSH/JScriptで,VBAのソースコードだけを抜き取る) - 主に言語とシステム開発に関して
  • パスワード付きのExcelの保護を,バッチで自動的に解除しよう (VBAマクロが見れないブックに対して,パスワードを自動入力) - 主に言語とシステム開発に関して

    バッチ・マクロのTOPExcel VBAは,パスワードで閲覧制限をかけることができる。 ※その方法: Excelブック内のマクロをパスワードで保護する方法 http://www.happy2-island.com/excelsmi... VBE上で,ツール>VBAプロジェクトのプロパティ>保護 を開く。 「プロジェクトを表示用にロックする」にチェック。 「プロジェクトのプロパティ表示のためのパスワード」を2箇所入力。 OKをクリックし,ブックを保存。 しかし,マクロを修正するたびに,いちいち手動でパスワードを入力するのは面倒。 さらに,「外部からバッチでExcel内部を自動操作したい」という時,パスワードのせいで,操作が妨害される。 以下では,Excelのパスワードを自動的に入力するスクリプトを記述する。(言語はWSH/JScript) 下記のコードを保存し,ダブルクリックすればよい。

    パスワード付きのExcelの保護を,バッチで自動的に解除しよう (VBAマクロが見れないブックに対して,パスワードを自動入力) - 主に言語とシステム開発に関して
    fumokmm
    fumokmm 2020/09/16
    SendKeysで頑張るやつ。
  • Excel VBAでシートをコピーする:Copy | UX MILK

    Copy メソッドではコピーしたシートを指定したシートの前、あるいは後ろに挿入するかを引数で指定します。 引数のシートを指定するときは Before や After の後にコロンとイコール := をつけて指定します。この := は、引数の順序に関係なく、特定の引数へ値を設定するときに用います。また、Before と After を同時に使用することはできません。 もし引数に何も指定しなかった場合は、新規のブックにコピーされます。 以下は、Sheet1 を Sheet2 の後の位置にコピーする例です。

    fumokmm
    fumokmm 2019/04/22
  • Excel VBAで値が数値であるかどうかチェックする:IsNumeric

    引数は1つのみです。戻り値は、True(真)またはFalse(偽)で、引数が数値に変換できる場合はTrue、そうでない場合はFalseを返します。また、引数が日付式だと、Falseを返します。 さまざまな形の値にIsNumeric関数を使用した結果を下記に示します。 Debug.Print 1256, IsNumeric(1256) '数値 Debug.Print "1256", IsNumeric("1256") '文字列(数値・半角) Debug.Print "1256", IsNumeric("1256") '文字列(数値・全角) Debug.Print "あいうえお", IsNumeric("あいうえお") '文字列(数値以外) Debug.Print "A100", IsNumeric("A100") '文字列(文字+数値) Debug.Print "100A", IsNumer

    fumokmm
    fumokmm 2018/09/26
  • ExcelVBA やっかいな「オートメーションエラー」 | 株式会社セルネッツ

    エラーメッセージ ExcelVBAによる処理において、恐らく最もやっかいなのが、この「オートメーションエラー」。 再現性に一定の規則が見られない場合が多く、開発現場では、何が何でもこの致命的なエラーを回避しなければ、次のステップへ進めませんので、発生傾向を振り返ってみました。 (A)シート操作を延々と繰り返すLOOP →シートの挿入など (B)セル操作を延々と繰り返すLOOP →Copy&Paste (C)シート関数の不備【循環参照エラー】 例えば、2行目から最下行までのデータの金額を、SUMIFS関数などをシート上のセルに出力する、そんなケースで、Fr行(小さい)→To行(大きい)という絶対的な大小関係が崩れ矛盾が生じる…。 【循環参照】と表示されるので、数式>ERRで確認してみると、原因がわかります。 (D)無限ループなどでメモリを大量消費してしまい発生 これは、特定の場所ではなく、メ

    ExcelVBA やっかいな「オートメーションエラー」 | 株式会社セルネッツ
    fumokmm
    fumokmm 2018/06/14
  • http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=36155;id=excel

    fumokmm
    fumokmm 2018/05/10
  • Office TANAKA - Excel VBA Tips[他ブックのマクロを実行する]

    Excel 上で 2 つのブックを開いていたとします。ここでは仮に「Book1.xlsm」と「Book2.xlsm」としましょうか。 「Book1.xlsm」には『Sub Test1』というマクロがあり、「Book2.xlsm」には『Sub Test2』というマクロがあったとします。 ここで、Test1 から Test2 を実行しようと次のように書くとエラーになります。 Sub Test1() Call Test2 End Sub Book1.xlsm には Sub Test2 がありませんので、Sub プロシージャが見つかりません というエラーです。来のやり方は、Book1.xlsm から Book2.xlsm を参照設定すればよいのですが、これは面倒くさいです。 他ブックのプロシージャを実行するときは、Call メソッドではなく Run メソッドを使いましょう。 Sub Test1(

    fumokmm
    fumokmm 2018/05/10
  • 【VBA入門】Select Caseで複数の条件分岐(Or/To/Is/Likeも解説) | 侍エンジニアブログ

    Select Caseとは(If文との使い分け) Select Caseステートメントは複数の条件により処理を分岐させたい場合に使用します。 条件により処理を分岐させる構文としてIf文もありますが、If文は分岐の数が少ない場合に使用します。if文では分岐が多くなると読みにくくなるため、分岐の数が多い場合にSelect Caseステートメントが使われます。 if文についてはこちらの記事で詳しく解説しているので、詳しく知りたい方はぜひ確認してください。 Select Caseの使い方 文法と基的な使い方 Select Caseステートメントは以下のように記述します。 Select Case 変数 Case 条件式1 処理1 Case 条件式2 処理2 Case Else デフォルト(どの条件にも一致しなかった場合)の処理 End Select 変数が条件式と合致するか条件式がTrueの場合に

    【VBA入門】Select Caseで複数の条件分岐(Or/To/Is/Likeも解説) | 侍エンジニアブログ
    fumokmm
    fumokmm 2018/04/28
  • エクセルVBAは2次元配列を使うと高速かつ便利

    エクセルで大量のデータを扱う場合、シートの読み込みや書き込みで処理が非常に遅くなる場合がある。1000個程度のデータで問題なく動いているのに実際に使う数十万個のデータだと処理時間が長すぎて実用できないこともある。ここでは処理速度と使いやすさを意識したVBAプログラムのテクニックを紹介したいと思う。 エクセルのマクロやVBAと言うともう十数年と使われている言語であるため、様々な参考書が出ていたり、ネットで紹介されていると思う。ただ、あまり速度まで気にしてサンプルプログラムが書かれていることはあまりない。プログラムの組み方に関してはプログラマの好みでいいと思うが、VBAに関しては組み方によって処理速度が大きく変わるので、作るのであればなるべく最速で動くようにしたい。(エクセルと連携したVBAが特殊ではあるが、仕事などではよく使われるだろう) 現在のパソコンであれば処理速度を意識しなくてもいいん

    エクセルVBAは2次元配列を使うと高速かつ便利
    fumokmm
    fumokmm 2018/04/28
  • セル範囲の左上と右下を取得する - Excel VBA サンプル - GoGoCheetah

    fumokmm
    fumokmm 2018/04/26
  • VBA マクロ高速化のために停止すべき3項目 - t-hom’s diary

    VBAでは画面描画を停止すると実行が早くなることは広く知られているが、実はあと2つ、設定すると有効なオプションがある。 手動計算と、イベントの抑制だ。 それぞれ、次のようにして設定する。 Application.ScreenUpdating = False '描画停止 Application.EnableEvents = False 'イベント抑制 Application.Calculation = xlCalculationManual '手動計算 With文で一度に設定しても良い。 With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With 設定を解除するには次のようにする。 With Application .ScreenUpdat

    VBA マクロ高速化のために停止すべき3項目 - t-hom’s diary
    fumokmm
    fumokmm 2018/04/24
  • CallByName関数と コールバック関数と Eventで呼んでみる - yamaV1.02βのブログ

    Sub オブジェクトのメソッドを呼ぶ1() 'ParamArray 内の引数は、名前付き引数ではありません。 CallByName Object:=Sheet1, ProcName:="Copy", CallType:=VbMethod End Sub Sheet1 オブジェクトを指定し、 Copyメソッドを引数無しで呼んでいるので、 新規ブックに Sheet1 のコピーが作成されます。 このコードは、ParamArray 内の引数は、名前付き引数ではありません。 というコンパイルエラーになります。PramArray引数(CallByName関数では、第四引数)を使用している関数やメソッドのプロシージャでは、名前付き引数での指定は出来ません。 エラーにならない書き方は、次のように名前付き引数なしの記法になります。 ワークシートオブジェクトのCopyメソッドは、引数として [Before]

    CallByName関数と コールバック関数と Eventで呼んでみる - yamaV1.02βのブログ
    fumokmm
    fumokmm 2014/07/17
  • 他アプリを起動する:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug

    ツイート Excelのマクロは基的にExcelを操作するための機能です。 しかし、ときにはExcel以外の、他のアプリケーションを起動したいこともあるでしょう。 ここでは、VBAで他アプリを起動したり、そのアプリを操作したりするテクニックをご紹介します。 ■Shell関数でアプリケーションを起動する 他のアプリケーションを起動する最も簡単な方法の一つはShell関数です。 Shell関数は、引数で指定した実行形式ファイルを起動します。 Sub Sample1() Dim rc As Long rc = Shell("notepad.exe", vbNormalFocus) If rc = 0 Then MsgBox "起動に失敗しました" End Sub Sample1はWindows標準ツールの「メモ帳」を起動します。 メモ帳の実行形式ファイルはnotepad.exeで、一般的にはC: