
DataGridView編メニュー全般DataGridViewの現在のセルを取得、または変更する DataGridViewの指定したセルを編集できないようにする 条件に応じてセルを編集できないようにする DataGridViewの一番下の新しい行(新規行)を非表示にして、ユーザーが新しい行を追加できないようにする DataGridView内のある行が新しい行(新規行)か調べる DataGridViewの行をユーザーが削除できないようにする 条件に応じてユーザーが行を削除できないようにする 指定した列がDataGridViewに存在するか調べる DataGridViewの列や行を非表示、または削除する DataGridViewの列の幅や行の高さをユーザーが変更できないようにする DataGridViewの列の幅や行の高さを自動的に調整する DataGridViewの指定した列や行を固定してス
今日は所望のデータだけを表示するという機能を紹介します。 エクセルではこの機能をオートフィルタと呼ぶようです。 とても簡単かつ便利な機能ですので、 まだオートフィルタと出会ってない方は これを機に覚えちゃいましょう! では説明しますね。 下図のように、氏名・趣味・住まいが記された名簿があったとします。 「趣味が音楽鑑賞の方だけ教えてくれない?」 なんて言われたら、オートフィルタを使っちゃいましょう。 まず、項目行を選択します。 次に、ツールバーから 「データ」→「フィルタ」→「オートフィルタ」 と選択します。 すると、下図のように、項目の横にボタンが表れます。 今回は、趣味が音楽鑑賞の方を表示したいので、 下図のように、趣味項目のボタンをクリックし、 一覧から「音楽鑑賞」を選択(クリック)します。 すると、下図のように趣味が音楽鑑賞の方だけ表示することが できます。 とても簡単ですよね♪
リストボックスで複数の項目を選択可能にするには、リストボックスのMultiSelectプロパティを設定します。標準では「fmMultiSelectSingle」が設定されています。 fmMultiSelectSingle fmMultiSelectMulti fmMultiSelectExtended 標準のfmMultiSelectSingleは、単一選択です。fmMultiSelectMultiまたはfmMultiSelectExtendedを設定すると、複数の項目を選択可能になります。両者は複数の項目を選択する方法が異なります。 【fmMultiSelectMulti】 項目をクリックすると選択できます 別の項目を選択するときもクリックだけです CtrlキーやShiftキーは必要ありません すでに選択している項目を再度クリックすると 選択状態が解除されます 【fmMultiSelec
これは基本的なテクニックだと思って今まで解説しませんでしたが、セミナーなどで質問が多かったので、簡単に書いておきます。たとえば、下図のようなリストがあったとします。 この、現在入力されている最終セル(あるいは最終行)を取得するには、どうしたらいいでしょう。 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
ワークシートの最終セル(最終行、最終列)を取得する… VBAをはじめた人は誰しも最初に引っかかる問題ではありますが、幸いにもインターネットで検索するといくつもの解決法が見つかります。 ところが…動いたり動かなかったり、想定外の動作をすることがあります。そもそもいくつもの解決法があること自体おかしい、いったい本当の答えはどれ?この際、白黒はっきりさせようじゃないかというのがこのページの趣旨です。 <S1> ワークシートの最大行、最大列を取得する MaxRow = Rows.Count MaxCol = Columns.Count まず基本からですが、ワークシートの最大行、最大列を取得するコードです。もちろんこれ自体は最終行、最終列を取得するものではありません。 Rowsはワークシートの行全体をあらわすオブジェクトで、Columnsは列全体をあらわすオブジェクトです。そのメソッドCountは数
Add2メソッドについて(2019年1月 追記) 2018年10月18日にExcel 2016は機能拡張されて、バージョン1810(ビルド 11001.20074)になりました。このとき実装された機能拡張のひとつに、"新しいデータ型"があります。追加されたのは「株式型」と「地理型」です。両者の型に関しては、下記Microsoftのページをご覧ください。 Excel データ型: 株価と地理 この「株式型」と「地理型」の追加に伴って、セルの並べ替えで条件を指定するSortFieldsコレクションに、新しくAdd2メソッドが追加されました。ちなみに、いままではAddメソッドでした。両者の働きに大きな違いはありませんが、Add2メソッドは、新しい「株式型」と「地理型」のサブフィールドを並べ替えることが可能です。Add2メソッドをヘルプで調べると、次のように記載されています。 この API には、地
VBAでソートプログラムを探すと割と簡単に見つかるが、ほとんどが配列をソートするものだ。 今回私が仕事で使うとあるマクロの作成中、コレクションのソートが必要になったので方法を紹介しようと思う。 必要な命令を自作する まず、どのようなソートであれ必要になるのが、値の交換を行う手段である。 配列で1番目のデータと2番目のデータを交換するには、データ退避用の変数を用意して次のように交換する。 Tmp = Arr(1) Arr(1) = Arr(2) Arr(2) = Tmp コレクションの場合はやや面倒で、値を直接書き換えることができない。 そこで、追加・削除を使って実装する。 バブルソートの中でやるとコードが複雑になるので、CollectionSwapというプロシージャにまとめた。 Sub CollectionSwap(C As Collection, Index1 As Long, Inde
引数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
Fields コレクションは、ADO の組み込みコレクションの 1 つです。 コレクションは、単位と呼ばれるアイテムの順序付けされたセットです。 ADO コレクションの詳細については、「ADO オブジェクト モデルの 」を参照してください。 Fields コレクションには、Recordset内のすべてのフィールド (列) の Field オブジェクトが含まれています。 すべての ADO コレクションと同様に、Count プロパティと Item プロパティ、および Append メソッドと Refresh メソッドがあります。 また、CancelUpdate、Delete、Resync、および他の ADO コレクションでは使用できない Update メソッドも含まれています。 Fields コレクションを調べる このセクションで紹介したサンプル Recordset の Fields コレクシ
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
VBAにもクラスのコンストラクタとデストラクタがあるらしく、利用方法をまとめた。 コンストラクタ Public Sub Class_Initialize() 'ここに処理を書く End Sub デストラクタ Public Sub Class_Terminate() 'ここに処理を書く End Sub ただし、引数を設定することが出来ず、宣言と同時に初期化を行った場合にはClass_Initializeが走らないという謎の挙動をしてる TestClass Public Sub Class_Initialize() debug.print "コンストラクタが動いたよ!" End Sub Public Sub Class_Terminate() debug.print "デストラクタが動いたよ!" End Sub Test1プロシージャ Public Sub Test1() Dim testA
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く