VBA-マクロのパスワード解除とは?(VBAProjectパスワードのこと) マクロのパスワード解除とは、「VBAProject パスワード」の解除って意味ですね。
オブジェクトの表示形式を表すバリアント型 (Variant) の値を取得または設定します。 構文 expression.NumberFormat expression は Range オブジェクトを表す変数です。 注釈 指定されたすべてのセル範囲の表示形式が同じでない場合、Null を返します。 表示形式を示す文字列は、[ セルの書式設定] ダイアログ ボックスの [ 表示形式] の文字列と同じです。 この文字列は、NumberFormat プロパティと NumberFormatLocal プロパティで使われますが、Format 関数で使う表示形式とは異なります。 詳細については、 表示形式の書式記号 (Microsoft サポート) を参照してください。 例 次の使用例は、シート 1 のセル A17、行 1、および列 C にそれぞれ表示形式を設定します。 Worksheets("Shee
ブックを次の受信者に回覧する必要がない場合 (回覧用紙がないか、既に回覧されている場合)、この引数は無視されます。 それ以外の場合、このパラメーターの値に応じてブックが回覧されます。 True を指定すると、次の受信者にブックが送信されます。 False を指定すると、ブックは送信されません。 この引数を省略すると、ブックを送信するかどうかを確認するダイアログ ボックスがユーザーに表示されます。 注釈 Visual Basic からブックを閉じるとき、ブックの Auto_Close マクロは実行されません。 RunAutoMacros メソッドを使用して、Auto_Close マクロを実行します。 例 次の使用例は、Book1.xls を閉じます。内容の変更は保存しません。 Workbooks("BOOK1.XLS").Close SaveChanges:=False サポートとフィードバ
VBAには、ファイルの種類を調べる関数などがありません。ファイルの種類を調べるには、FileSystemObjectを利用します。FileSystemObjectのFileオブジェクトには、Typeプロパティがあり、ファイルの種類を取得できます。 下のサンプルコードは、Application.GetOpenFilename()を使って「ファイルを開く」ダイアログを表示させ、そこで選択したファイルの種類を表示するものです。選択したファイルのパスが変数Targetに入るので、このパスをFileSystemObjectのGetFileメソッドに渡すことで、そのFileオブジェクトのTypeプロパティを取得しています。
サイト全体の更新情報・お知らせ 2022/10/24 LAMBDA関数と6つのヘルパー関数の解説を追加しました。 さらに、配列を便利に扱える関数等も多数追加されましたので、これらの関数の解説も追加しています。 LAMBDA以降に追加された関数 , LAMBDA以降の新関数の問題集 2022/09/26 数式を入力したセルから結果があふれて隣接したセルにも出力される新機能のスピル。 スピルの基礎から応用までのスピル問題集を追加しました。 2020/10/20 新シリーズ!ツイッター連動企画「VBA100本ノック」を開始しました。 ツイッターで1日1本出題し翌日解答VBAを出します。 2021/03/03に最後の100本目を出しました。 2020/09/06 新シリーズ「Python入門:プログラミング事始め」を開始しました。 人気のプログラミング言語Pythonを初心者向けに基礎から解説。
こちらの記事で伊藤先生も書かれているように、この数年でVBAのクラスモジュールに関する情報が充実してきている。 これからクラスモジュールについて学習しようと考えている方も沢山(期待を込めて)いらっしゃることと思う。 そこで今回は、オブジェクト指向を学習するにあたってつまづきやすいポイントを紹介し、その処方箋としてアドバイスを書いてみようと思う。 私がオブジェクト指向でつまづきやすいポイントは以下の7つだと考える。 オブジェクト指向の目的が理解できない オブジェクト指向の悪評に惑わされる オブジェクト指向の用語がややこしすぎる オブジェクト指向の前に覚えるべきことを覚えていない オブジェクト指向の一部の特長を過大に受け止めてしまう オブジェクト指向での具体的な実装方法が分からない オブジェクト指向の活用方法が分からない これらは私自身がつまづいたポイントでもある。こうしてみると結構ある。 で
はじめに ADODB.StreamオブジェクトのSaveToFileメソッドでUTF-8形式のファイルを作成した場合、ファイルの先頭にBOM(Byte Order Mark)が付加されてしまいます。 この記事では、BOMを付加せずに、UTF-8のファイルを作成する方法を紹介します。 2009.12.13追記 一時ファイルを作成しなくても、BOMなしのUTF-8ファイルを出力する方法が見つかりました。 BOMなしのUTF-8ファイルを作成するには、まずBOM付きの一時ファイルを作成します。そして、一時ファイルをバイナリモードで読み込み、BOMの部分(先頭3バイト)を読み飛ばした4バイト目からバイナリモードで目的のファイルに書き込むという手法を用います。 一応説明しておくと、一度Streamに対してUTF-8でデータを書き込みます。その後で、バイナリとして最初の3バイト(BOM分)を読み飛ばし
Sub Sample_SaveCopyAs() Dim OpenBook As String Dim CopyBook As String Dim w As Workbook Dim Result, Prompt, Buttons, Title 'コピー元のブック名 OpenBook = "C:\Documents\test01.xlsx" '保存するブック名 CopyBook = "C:\Documents\mybook.xlsx" 'コピー元ブックを開く Set w = Workbooks.Open(OpenBook) '同名のブックが存在する時の処理 If Dir(CopyBook) <> "" Then 'メッセージボックス表示 Prompt = "同名ファイルが存在します。" & Chr(13) & "上書きしますか?" Buttons = vbYesNo + vbInforma
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
テーブルを作ってから「テーブル定義書」を作るようなものです。 本来は「データベース設計」なるものがあって、先に「テーブル定義書」を作成して、その「テーブル定義書」に従って実際のテーブルを作成するものです。 ですが、実際の運用場面では「設計」などは担当者の頭の中にあって、操作が簡単なこともあって先にテーブルを作ってしまって運用してしまうこともあるようです。 しかも後から機能拡張を繰り返し、当初の担当者も継続して担当しているとは限らないので、後から設計ドキョメントを見ても実体と合っているか分からない。 なんてことはありませんか? このサンプルは「ダウンロード」の「MDB(ACCDB)生成/テーブル定義取得ツール」を利用しています。 ソースコードを変更することなく利用できるもので、「ダウンロード」の方ではコードの説明を行なっておりませんので、こちらで紹介します。 当初、このページにはADOXを使
シート名の一覧を抽出する方法をご紹介します。 ■方法1:名前の定義を使う 「数式」タブ-「名前の定義」をクリック 適当な名前を入力し(例 sName)「参照範囲」に=GET.WORKBOOK(1)と入力して「OK」 シート名を出したいセルに次の数式を入力し、オートフィルする =REPLACE(INDEX(sName,ROW(A1)),1,FIND("]",INDEX(sName,ROW(A1))),"") 補足:get.workbook(1)ではシート名の一覧を取得できます。名前の定義後、=名前を入力すると[ファイル名]シート名が表示されます。 INDEX関数でシート名一覧から○行目…を指定することで1番目のシート、2番目のシート…のように取得できます。○行目はROW(a1)…で指定します。 ■ 方法2:VBA画面に表示(簡単) ALT+F11キーを押す CTRL+Gキーを押して下部に「イ
これは基本的なテクニックだと思って今まで解説しませんでしたが、セミナーなどで質問が多かったので、簡単に書いておきます。たとえば、下図のようなリストがあったとします。 この、現在入力されている最終セル(あるいは最終行)を取得するには、どうしたらいいでしょう。 Excelに詳しくない、VBAのプログラミング的なことしか知らないような方でしたら、次のように考えるかもしれませんね。「A列を上から順番に見ていって、空欄セルが見つかったら、その直前が最終セル」だと。その方法でやってみましょうか。 Sub Sample1() Dim i As Long, r As Long For i = 1 To 10000 Range("A" & i).Select If Selection = "" Then r = i - 1 Exit For End If Next i Range("A" & r).Sele
昔、本項で比較したかったのは、要するに「For Next と For Each って、どっちが速いの?」ってことです。1995年にMicrosoftから出版されたVBAに関する公式本に「For Each の方が速いよ~理由はね~」って書いてあったからです。その頃調べた結果では、確かに For Each の方が速かったです。でも、時代は変わりました。と同時に、パソコンの性能も飛躍的に向上しています。理論的に速くても、体感速度として、あるいは計測結果としては、どうなんでしょう。 まず、For Next と For Each で比較してみましょう。 Sub Test1() Dim i As Long For i = 1 To 10000 Cells(i, 1) = 100 Next i End Sub Sub Test2() Dim c As Range For Each c In Range(
ワークシートの最終セル(最終行、最終列)を取得する… VBAをはじめた人は誰しも最初に引っかかる問題ではありますが、幸いにもインターネットで検索するといくつもの解決法が見つかります。 ところが…動いたり動かなかったり、想定外の動作をすることがあります。そもそもいくつもの解決法があること自体おかしい、いったい本当の答えはどれ?この際、白黒はっきりさせようじゃないかというのがこのページの趣旨です。 <S1> ワークシートの最大行、最大列を取得する MaxRow = Rows.Count MaxCol = Columns.Count まず基本からですが、ワークシートの最大行、最大列を取得するコードです。もちろんこれ自体は最終行、最終列を取得するものではありません。 Rowsはワークシートの行全体をあらわすオブジェクトで、Columnsは列全体をあらわすオブジェクトです。そのメソッドCountは数
Excel VBAでハッシュを使う方法のまとめです。 1.はじめに Excel VBAではハッシュテーブル(連想配列)を使うことができます。 で、ネットで検索してもパッとみて分かるようなサンプルがなかったので、できるだけ無駄なものを省いたサンプルを使って本エントリーで説明してみたいと思います。 2.サンプル まずはざっくりしたサンプルから紹介します。 Sub test() Dim obj As Object Set obj = CreateObject("Scripting.Dictionary") obj.Add "foo", 100 obj.Add "bar", 200 obj.Add "hoge", 300 Dim key As Variant For Each key In obj MsgBox obj(key) Next key Set obj = Nothing End Sub
引数varnameにユーザー定義型を指定することはできません。 サンプル 次の例は、バリアント型変数の内部処理形式を表示します。 Sub Sample() Dim var As Variant var = "ABC" MsgBox VarType(var) '8を表示します var = 123 MsgBox VarType(var) '2を表示します var = 123.456 MsgBox VarType(var) '5を表示します var = Array("A", "B", "C") MsgBox VarType(var) '8204を表示します End Sub
VBA でシステムを作ったとき、機能をメニューから選択できると便利ですね。独自のメニューをメニューバーに登録する方法をご紹介しましょう。 Sub AddMenu() Dim NewM As Variant, NewC As Variant ''新しいメニューを追加する Set NewM = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup) NewM.Caption = "新しいメニュー(&C)" ''オリジナルコマンドを追加する(1) Set NewC = NewM.Controls.Add With NewC .Caption = "保護解除(&U)" .OnAction = "UnProtectSheet" .BeginGroup = False .FaceId = 277
Time関数 Topへ パソコン(システム)の時刻が返されます。 使用例 Sub test1() Range("A1").Value = Time End Sub A1セルにはPCの時刻が「10:20:40」(10時20分40秒)のように返ります。 Now関数 Topへ パソコン(システム)の日付と時刻が返されます。 使用例 Sub test2() Range("A1").Value = Now End Sub A1セルにはPCの日付と時刻が「2008/11/2 14:44:40」(2008年11月2日 10時20分40秒)のように返ります。 Hour関数 Topへ パソコン(システム)の時刻の時数が返されます。 使用例1 Sub test3-1() Range("A1").Value = Hour(Time) End Sub A1セルにはPCの時刻が10時20分40秒のとき、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く