このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
参照渡しと値渡しの違い 参照渡しと値渡しを簡単におさらいすると、関数の引数につけるキーワードのByRefとByValのことを指し、ByRefを付けるか省略した場合は参照渡しの引数として扱い、ByValを付けた場合は値渡しの引数になります。 で、本題の参照渡しと値渡しの違いですが、関数(プロシージャ、メソッド)の中で変更した引数の「値」を呼び出し元に引き継がれるかどうか、という点です。 参照渡し(ByRef)の場合は関数内部で変数に加えた変更が呼び出し元でも引き継がれますが、値渡し(ByVal)の場合は引き継がれず、関数を呼び出したときの値のままです。 ただ、引数がプリミティブ型とオブジェクト型でByValを付けたときの挙動が変わるため注意が必要です。 このページでは特にその注意点について記述しています。 構文 プロシージャの構文は以下になります。 Sub プロシージャ名([ByRef(省略
ご質問を 客観的にシンプルに見ると(=状況がわからない第三者が何の先入観もなしに見ると) ズバリ,「すごく変な質問!」だと思いませんか? おそらく理解不能だと思います。 例えば, 単純に考えると次のように見えます。 「セルA1 を選択したら セルA1 を選択状態にして セルA1 の値を セルA1 の値にしたい!」 ↑わっけわからん じゃないですか? ========= 上のように考えても「わっけわからん!」状態なので 私が,私なりに,状況を推測してみました。 もし,以下の状況の推測が間違っていれば, この回答は無かったことにしてください。 おそらく全く役に立ちません。 例えば シート全体のセルの書式設定を「標準」にした上で セルA1 に 1234 と入力し決定すると,それは "数値" として扱われます。 ここまでは良いのですが, 次にその セルA1 なり,その A列 なり,そのシート全体の
Excel、AccessのVBAでのファイル読み込み方法はたくさん有ります。 でも結局どのやり方が一番早いんだ!ってことでいろいろコード書いて計測してみました。 条件 ・約3MBの可変長CSVファイルの全読み込みと一部のコードでは行数取得。 ・処理時刻の計算はVBA 超高精度タイマークラスを使っています ・メモリ処理のRedim preserveは重たい処理ですが、可変長ファイルなのでメモリの一括確保はしませんでした。 ファイルサイズからメモリ容量を計算してメモリを確保するともっと早くなります。メモリマッピングのような処理です。 ・For文で10回同じコードを走らせてます。ですので初回以降はキャッシュが効いて高速になります。 ・時刻の単位は秒です。 ・最終的な文字コードはUnicodeです ・計測用コードは以下の通り Option Explicit Public Function Read
Excelで数字(JANコード8桁/13桁)からバーコードを作成するイメージ Excelで数字からバーコードを作成するイメージについて説明をします。 まずは標準機能でExcelのシートから手動でバーコードを挿入していきます。 バーコードを設置できたら手動でバーコードの種類(JANコード8桁/13桁)を変更したり、値を設定したりします。 次にVBAでバーコードを一括で作成していきます。 値をA列に設定し、バーコードのサイズはB列の縦横の幅に自動調整するようにします。 一括でバーコードが作成できると便利ですよね! 早速試してみましょう。 JANコードとは まず、JANコードについて説明をします。 JANコードとは商品管理や流通用として使用されるコードで、一般的にバーコードといったらこのJANコードを指します。 JANはJapanese Article Numberの略称で日本国内での呼び方とな
私のセミナーを受講された方から質問されました。VBAでCSVを読み込むときの話です。 CSVを読み込むとき、Line Inputを使っているんですけど、CSVの行数が多いと時間がかかります。ネットで調べたら、Line InputよりQueryTableを使った方が速いって書いてあったんですけど、どうなんでしょう? こうした誤解をしている方がとても多いので、ここに書いておきます。 まず、読み込むCSVをご覧ください。 こんな感じのCSVです。これ100,000行あります。まずはLine Inputで読み込んでみましょう。ここでは、次のコードでやってみます。 Sub Macro1() Dim buf As String, A As Variant, i As Long, j As Long Open "C:\Data\Work\sample.csv" For Input As #1 Do Un
NullとEmptyとNothingと空の文字列の違い (Access 97/2000/2002/2003/2007/2010) ツイート VBAでは変数やフィールドに有効な値がない状態や、空の状態を表す値がいくつもあります。 ここでは、それぞれの意味や使用上の注意についてご紹介します。 ■長さ0の文字列("") 文字を1つも含まない文字列 ("") です。 「長さ0の文字列」の名前のとおり、Len関数やLenB関数の引数に指定すると0を返します。 Dim myStr As String myStr = "" Debug.Print Len(myStr) '--> 0 と表示される ■値0の文字列(vbNullString) String型の変数の初期状態を表す値です。vbNullStringという定数で表します。 長さ0の文字列("")と同様に、Len/LenB関数の引数に指定すると 0
今回は「Sort」オブジェクトを使用して、シート上のデータを並び替えする方法をご紹介します。 並び替えは見た目の順番を変えるだけではなく、本領を発揮するのは膨大なデータの前処理など、処理時間が長くなってしまう処理なども並び替えを組み込むことで高速化する事も可能なところではないかと思います。 下記で説明する定数はデフォルト値を赤文字にしています。 今回紹介する方法はExcel2007以降で使用できます。 1.Sortオブジェクトで並び替えをする方法 Sortオブジェクトで並び替えする方法は、Excel2007から「SortFieldオブジェクト」で条件を指定して、「Sortオブジェクト」で条件に合わせて並び替えをします。 並び替えは次の手順で行います。 シートに依存するため、シートをアクティブにしないと意図しない並び替えとなります。 シートをアクティブにする並び替え条件をクリア「SortFi
今回は、Sortオブジェクトで設定関係を入れて、Sortメソッドで実行しました。 なんだか無駄にややこしくしてしまった感もあります。。 実際に書いたコード 実際に書いたコードのデフォルメは以下のとおりです。 一部、変数だったところを固定値にしています。 With ActiveSheet ' ソート順設定 With .Sort.SortFields .Clear ' 設定クリア .Add Key:=Range("A1"), _ DataOption:=xlSortTextAsNumbers .Add Key:=Range("B1"), _ DataOption:=xlSortTextAsNumbers End With ' ソート実行 With .Sort .SetRange Range("A1:F50") .Header = xlYes .Orientation = xlTopToBott
Rangeオブジェクトと、Rangeプロパティの違いを解説します。 同じところ 違うところ もっと詳しく オブジェクト.プロパティ セルを表すオブジェクト = Rangeオブジェクト Rangeオブジェクトを取得するプロパティたち プロパティって右側なんじゃないの? まとめ おまけ:ひとつ嘘をついてるので訂正します おまけ:本題と関係ない嘘 同じところ どちらも「セル」または「セル範囲」を扱います。 違うところ 一言で言ってしまえば、「Rangeオブジェクトを取得する、たくさんあるプロパティの中のひとつがRangeプロパティ」です。 もっと詳しく ↑の説明でわかる人はあまりこのページに来ないと思いますので、 詳しく説明していきます。 知ったからと言ってすぐに実務に活きるような話ではないので、 分からない部分は読み飛ばしながら、気楽に読んでください。 結構難しい話なので、見通しが立てやすいよ
以前まで下記記事のようにClipBoardのDataObjectを使用してコピーしていましたが、 環境によってはコピーして文字化けするようです。(Windows10/64bit/Excel2016で発生) ExcelVBAマクロ「指定したキーワードをクリップボードへコピーする」をパーツ化する 上記記事のPutInClipboardが文字化けを起こす原因のようです。 文字化けする環境でも、コピーする方法はあります。 以下のコードを参考にしてください。 文字化けする端末でもクリップボードへコピーする方法'■指定したキーワードをクリップボードへコピーする(文字化け対策済み) Public Function call_ClipBoardSave(temp As String) With CreateObject("Forms.TextBox.1") .MultiLine = True .text
Mid関数とMidB関数は文字列の指定位置から指定文字数の文字列を取得します。 Mid関数とMidB関数の違いは第三引数に指定する値の考え方が異なる点です。第一引数と第二引数の考え方は同じです。 詳細は後述しますが、日本語圏のMidB関数はそのままではほとんど使い物になりません。 Shift-JISとしての全角を2バイト、半角を1バイトとして処理したい場合は「VBAでバイト単位でのLenとMidとLeftとRight」にShift-JISの感覚で使えるMid関数を紹介していますので参考にしてください。 MidB関数はバイト単位という説明は間違い MidB関数はバイト数を指定する、という説明が多いですが、日本語圏での説明としては不十分です。 実際にはバイト数ではなく、第三引数の文字数には文字数×2を指定することになります。 これはMidB関数がShift-JIS換算のバイト数ではなく、2バイ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く