
エイリアス化された名前空間のメンバーにアクセスするには、名前空間エイリアス修飾子 :: を使用します。 ::修飾子は、2 つの識別子の間でのみ使用できます。 左側の識別子には、名前空間エイリアス、extern エイリアス、または global エイリアスのいずれかを指定できます。 例えば次が挙げられます。 using エイリアス ディレクティブを使用して作成された名前空間エイリアス: using forwinforms = System.Drawing; using forwpf = System.Windows; public class Converters { public static forwpf::Point Convert(forwinforms::Point point) => new forwpf::Point(point.X, point.Y); } extern エイ
複数のVisual Studioのプロジェクトで同じソース・コードを使いたい場合や同じバージョン情報を設定したい場合など、ソース・ファイルを共有したいことがある。共有すれば、1回の修正で、すべてのプロジェクトにそれを適用できるので、効率がよいからだ。 このような目的には、Visual Studioの標準機能として搭載されているリンク・ファイル機能が役立つ。この機能は、Visual Studio .NET(2002/2003)およびVisual Studio 2005で利用できる。 本稿では、このリンク・ファイル機能の使い方を紹介する。サンプルとして、Visual Studio 2005を使って、複数のプロジェクトでバージョン情報ファイル(AssemblyInfo.cs)の一部の情報(=.NETアセンブリに設定する会社名と著作権情報)を共有する例を示す。 Visual Studioのリンク・
目的の文字コードに合ったEncodingオブジェクトを取得する例えばテキストファイルを文字列(String型)として読み込む時、そのテキストファイルの文字コードが何であるかによって、適切なエンコーディング(注)を選択する必要があります。そのエンコーディングを表すのが、Encodingオブジェクトです。適切なEncodingオブジェクトを選択してテキストファイルを読み込まないと、文字化けします。 注:「エンコーディング」とは、どのように文字列をバイト列に変換(エンコード)するかという方法のことです。なおここでは、バイト列を文字列に変換(デコード)する方法を含めて「エンコーディング」と呼ぶことにします。 同様に文字列をテキストファイルに書き込む時も、どのような文字コードで書き込むかによって適切なEncodingオブジェクトを選択する必要があります。 ここでは、目的の文字コードに合ったEncod
DataTable自体にはソートをしてくれる機能がありませんが、DataTable.Select を応用することでソート処理ができます。 DataTable.Select() メソッドが DataTable の中でフィルタをかけるのに使えるということは(VB.Net)DataTableで特定の列の最大値を含む行を取得したい。(DataTable.Select)で紹介しました。 今回は純粋にソートだけを行う方法です。 問題は、DataTable.Select() メソッドは引数で指定された条件にあった DataRow 配列を返すという点です。DataTable 自体の内部のソートはしてくれません。 ということで、返り値の DataRow 配列を元に、新しい DataTable を作成するという方法をとりました。 コードはこんな感じです。 'ソート対象のテーブル作成 Dim dtbl As N
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
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く