条件付き書式の「条件」が数式の場合のカウント

条件付き書式で「条件」が数式の場合、その条件を満たすセルの数をカウントするマクロを作ってみました。しかし、条件を満たすセルの数をカウントするには、こんなもん使うよりも作業セルを用いて判定結果を出しておいて、それをカウントするようにした方が…

数式文字列-A1方式・R1C1方式-変換

Excelでは、セルの参照形式として、A1方式とR1C1方式があります。 A1方式で記述されている数式をR1C1方式の記述に変更するプロシージャと、その逆をするプロシージャを作ってみました。 実は、「条件付き書式の「条件」が数式の場合のカウント」のために作っ…

文字列分割プロシージャ(泣き別れ防止)

住所などの長い文字列を印刷する場合、適度な長さで分割して複数行にすることがよくあります。 その場合、単純に文字の長さだけで分割すると、変な位置で切れてしまって見栄えがよくありません。 そういうときのために、適切な位置で切るプロシージャを用意…

セルへの出力で配列を使う場合の注意点

Excelで大量の値を連続したセルに代入したい場合、値を2次元配列に格納しておいて、それを同じサイズのセル範囲のValueプロパティに代入するということはよく行われます。 これは、高速化のテクニックとして非常にポピュラーなものです。 1セルずつ出力し…

テキストファイル(UTF-8)の作成

シート上の一定のセル範囲にあるデータを UTF-8(Uni-Code) のテキストデータとして出力するマクロのサンプルです。 ただそれだけです。 ' # 参照設定:Microsoft ActiveX Data Objects 2.8 Library Public Sub Main() Const cFilename As String = "TESTOUT.…

コピペとセル先頭の ' の削除

Excelは、数値や日付等に変換できる値をセルに入力した場合、自動的に数値や日付等に変換してセルに格納します。 セルの書式設定を「標準」にしたまま、これらの値を文字列として入力する場合には ' を先頭につけて入力します。 セルの書式設定「標準」のま…

ファイルが破損したと言われてもダメもとで…

Excelは、Ver.12 − Excel2007からファイル形式も変わって破損しにくくなったらしいです。 ブックの共有機能を使わなければ、以前からファイルの破損に遭遇することが少なかったのであまり実感はありませんが…。 Ver.12からシートあたりの行数も列数も格段に…

マクロで「並べ替え」をする

Excel2007 で「並べ替え」をするには、以下のようなVBAのコードになります。 これは自動記録したマクロにちょこっと手を加えただけのものです。 Sub Macro1R() Dim shtA As Worksheet Dim sortA As Sort Dim rngA As Range Set shtA = Worksheets("Sheet1") Se…

OnAction と引数

MOUG(Excel VBA)2008/05/27 22:42:47 『OnActionで実行するプロシージャに引数を渡すと2度実行される?』 http://www.moug.net/faq/viewtopic.php?t=28150 で、なかなかおもしろいことがあったので書いておきます。 だいたいタイトルのとおりなんですが、…

MsgBox デバッグに御用心

Excel VBA でプログラムを作っている途中で、「この場合、この変数に何が入るのかな?」と確かめたくなった場合に、一時的に MsgBox を入れておいて実行し、その変数の中身を確認するということをしばしば私はやります。 しかし、API等から取得した文字列の場…

DUMMY

線が乗るセル

Excel2007 で、枠線に合わせて縦線と横線を引いてから、↓のマクロを実行してみました。 Sub Macro1() Dim lineV As Shape ' 縦線 Dim lineH As Shape ' 横線 Set lineV = ActiveSheet.Shapes(1) Set lineH = ActiveSheet.Shapes(2) Debug.Print "◆◇◆ Macro1 …

同じ場所なのに、違う位置?

Excel2007 で、開始位置が同じである縦線と横線を引いてから、↓のマクロを実行してみました。 Sub Macro1() Dim lineA(1 To 2) As Shape Set lineA(1) = ActiveSheet.Shapes(1) Set lineA(2) = ActiveSheet.Shapes(2) Debug.Print "◆◇◆ Macro1 ◆◇◆" Debug.Pr…

高さが幅で、幅が高さ

Excel2007 で縦の直線を引いて、↓のマクロを実行してみました。 Sub Macro1() Dim lineA As Shape Set lineA = ActiveSheet.Shapes(1) Debug.Print "◆◇◆ Macro1 ◆◇◆" Debug.Print "高さ:" & lineA.Height, "幅:" & lineA.Width End Sub Sub Macro2() Dim l…

四捨五入にご用心

↓のマクロを実行すると、 Sub Test() Dim X As Currency X = 12.34567 Debug.Print X Range("A1").Value = X X = Range("A1").Value Debug.Print X End Sub 12.3457 12.35 となります。 (セル A1 の書式はデフォルトの状態とします。) 一つ目の Debug.Prin…

数式表示関数

以前に MOUG の回答で作ったユーザー定義関数です。 一言で言うと、数式の中身を見るための関数です。 例えば、セルA1 に数式が入っているとします。 そのときに、この関数を使って =FormulaValue(A1) とすると、セルの参照先を見て数式で使っている値を表示…

せめて Long に

MOUG(Excel VBA)2008/04/06 10:47:34 『罫線の位置の変数の型』 http://www2.moug.net/bbs/exvba/20080406000001.htm ↓のように書いたコードで、変数 sen の型を何にするのが適切か? というQがありました。 (略) Select Case i Case 1 sen = xlEdgeTop…

半角カナの判定で…

MOUG(Excel VBA)2008/03/22 22:46:37 『文字種の中の半角カタカナのチェック』 http://www2.moug.net/bbs/exvba/20080322000018.htm たとえば、 「アイウエオ」 の場合アイウエオの文字種が半角カタカナであるかどうかを 知るにはどうすればいいのでしょうか。 こん…

TIME関数と TIMEVALUE関数

ここんとこ自分のサイトに関数のことをぼちぼち追加しているので、 たまには、一般機能の関数ネタをば。 セル A1 に、時 セル A2 に、分 セル A3 に、秒 を入れることにして、別セルに =TIME(A1,A2,A3) =TIMEVALUE(A1&":"&A2&":"&A3) とそれぞれ関数を入れて…

デートに注意!

MOUG(Excel VBA)2008/03/28 07:23:50 『VLOOKUP関数にて悩みがございます』 http://www2.moug.net/bbs/exvba/20080328000002.htm 現在Sheet1に下記の関数が入っております。 =VLOOKUP(DATE($A$1,$B$1,C6),Sheet2!$A:$H,7,FALSE) これを VBA のコードで書く…

Word を黙らせたいのだが…

MOUG(Excel VBA)2008/03/15 22:56:19 『ワードを終了させる 』 http://www2.moug.net/bbs/exvba/20080315000016.htm ワードもエクセルも起動させた状態で エクセル上のコマンドボタン1をクリックしたら ワードを終了させたいです。 はいはい、そんなの簡単…

PDF内の文字列の取得ねぇ…

PDF に関する質問は、ここ数年で PDF が広まるにつれてだんだん増えてきました。 Acobat なら OLE である程度は制御可能なので、何回かレスしたことがあります。 しかし、もはや、Excel VBA の世界の話ではないですね。 まぁ、Excel VBA掲示板では、そういう…

1つのシートモジュールに複数の Change イベントプロシージャをば

1つのシートモジュールに書ける Change イベントプロシージャは1つ… とは限りません。 実は、いくつでも書けます。 やり方は単純で、Sheet1 モジュールに Public WithEvents sht1 As Worksheet Private Sub Worksheet_Change(ByVal Target As Range) MsgBo…

Excelの最小化って分か…らない?

私は走りながら考えるタイプなので、走っていく先が実は崖だったということがたまにあります。 今回はそんなお話です。 Excel Q&A さろん(一般操作)2008/03/14 13:13 『タスクバー非表示について』NO.85749 エクセルを開いて、ウィンドウを最小化すると通…

IE への参照設定ができないので手抜き

試しもしないでレスをすることはしょっちゅうあるのですが、今回のもそういう話です。 MOUG(Excel VBA)2008/03/15 18:56:53 『Internet Explorerによる自動表示を停止するには』 http://www2.moug.net/bbs/exvba/20080315000013.htm で、話の流れで 「ユー…

それって Excel のせい?

だいぶん前から、日経コンピュータで『Excelレガシー再生計画』って連載記事があります。 まぁ、早い話が全体的には J-Sox 対応などを考えると「業務部門で作った業務用のExcelブックはダメダメだ」という内容ばかりで個人的には同意しかねるものばかりなん…

そのシート指定は何のためにあるの?

ちょっとばかり思うところがあって、↓の Macro1 を書いて実行してみました。 Sub Macro1() Sheet1.Range("A1").Copy Sheet2.Paste Destination:=Sheet3.Range("A1") End Sub こんなもん、Paste でエラーになるに決まっているだろ!と思ったのですが、、、 さ…

同じなのにNG、違うのにOK?

ユーザーフォームにコンボボックスとボタンを配置して、↓のコードを書いたとします。 Private Sub UserForm_Initialize() Me.ComboBox1.List = Array(1, "2") Me.ComboBox1.Style = fmStyleDropDownList End Sub Private Sub CommandButton1_Click() MsgBox …

Cells ダメなようでダメじゃない?

↓のマクロは1つだけNGなんです。 2つNGじゃなくて。 Sub Macro1() MsgBox Cells(1, 1).Address End Sub Sub Macro2() MsgBox Cells(1, "1").Address End Sub Sub Macro3() MsgBox Cells("1", 1).Address End Sub ちょっと考えれば理由は推測できるので…

1は1じゃないし、2も2じゃない?

Evaluate って、てっきり定数の場合はそのまんま返すだろうと思っていたのですが、そうとは限らないと今頃知りました。 Sub Macro1() Debug.Print Application.Evaluate("1") Debug.Print Application.Evaluate("2") Debug.Print Application.Evaluate("3") …