Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5635 / 13645 ツリー ←次へ | 前へ→

【49687】ダブルクォーテーション アッキー 07/6/16(土) 21:53 質問[未読]
【49688】Re:ダブルクォーテーション bykin 07/6/16(土) 22:45 回答[未読]
【49689】Re:ダブルクォーテーション アッキー 07/6/16(土) 23:24 質問[未読]
【49690】Re:ダブルクォーテーション neptune 07/6/16(土) 23:42 回答[未読]
【49708】Re:ダブルクォーテーション わさび 07/6/18(月) 10:32 発言[未読]
【49724】Re:ダブルクォーテーション bykin 07/6/18(月) 21:51 発言[未読]
【49740】Re:ダブルクォーテーション わさび 07/6/19(火) 9:34 お礼[未読]

【49687】ダブルクォーテーション
質問  アッキー  - 07/6/16(土) 21:53 -

引用なし
パスワード
   マクロでRange("A1").Bont.Bold="True"にすると正常に作動するのに
    Range("A1").Border.LineStyle="True"にすると
「bordersクラスのlinestyleプロパティを設定できません」となってしまいます。

でもTrueの””を取ると問題ありません。なぜですか???

【49688】Re:ダブルクォーテーション
回答  bykin  - 07/6/16(土) 22:45 -

引用なし
パスワード
   こんばんわ。

これは・・・(^^;;

プロパティやTrue/Falseの意味ちゃんとわかってるんかな?

Boldってのは太字かどうかの2値なのでBoolean型、つまりダブルクォーテーションなしのTrue/Flaseを設定または取得できます。
ダブルクォーテーションで囲んだ"True"は文字列なんで、本来は使ったらあきまへん。
Bold = "True" が何故エラーにならんかっちゅーと、文字列 "True" をBoolean型に変換するとTrueになるからです。
これはイミディエイトで ?CBool("True") なんてやるとわかります。
勝手に変換して判断してくれてるわけやね。

LineStyleは複数の値を持ち、これは数値(の定数でもよい)で設定または取得します。
数値で指定すべきとこに文字列持ってきてるからエラーになるんです。(こっちは変換できない)
ダブルクォーテーションをはずしたTrueがエラーにならんのは・・・旧バージョンとの互換性の関係かな?わからんけど。
LineStyle = True はOKやけど、LineStyle = -1 はエラーになるからねー(←Trueを数値変換すると-1になる)。
True/Falseと0はいけるみたいやね。

ま、せやけどそんなイレギュラーな方法より、True/Flaseとは何か、文字列/数値とは何かを理解して、
BoldにはBoolean型、LineStyleには数値と、本来の使い方をされることをお勧めします。

ほな。

【49689】Re:ダブルクォーテーション
質問  アッキー  - 07/6/16(土) 23:24 -

引用なし
パスワード
   早速のメールありがとうございました。
では、formulaの時はなぜ””をつけないといけないのですか??
formula="=D3"のように!!!!
文字列ではないですよね。
formula==D3ではだめですよね。

【49690】Re:ダブルクォーテーション
回答  neptune  - 07/6/16(土) 23:42 -

引用なし
パスワード
   ▼アッキー さん:
>早速のメールありがとうございました。
>では、formulaの時はなぜ””をつけないといけないのですか??
>formula="=D3"のように!!!!
!!!!
ってどういう意味?

>文字列ではないですよね。
>formula==D3ではだめですよね。
formula= までがVBAの書式で、formulaプロパティを"=D3"と設定しています。

Helpに
>セルに数式が入っているときは、数式バーでの表示と同じ形式で、
>等号を含む数式を文字列として返します。
とあるように、formulaプロパティに式を設定するときはやはり
文字列で設定しなければいけません。

bykinさんの言われるように
プロパティやTrue/Falseの意味を理解して、
True/Flaseとは何か、文字列/数値とは何かを理解することが大事です。


ちなみに==という演算子はVB(A)には在りませんから論外です。

【49708】Re:ダブルクォーテーション
発言  わさび  - 07/6/18(月) 10:32 -

引用なし
パスワード
   正しい解説ではないのかもしれませんが、
私は素人感覚で、以下のように認識しています。

formula…すなわち、関数なんですが、
これをマクロではなく、手作業で行うと、
セルに「=D3」って打ち込みますよね。
つまり、"=D3"っていう文字列を打ち込んでいるわけですよ。

なので、アッキーさんがいうところの、
>formula="=D3"
というのは、
マクロでの処理は、関数としての「=D3」を打ち込むだけをしていて、
実際の計算/処理は、マクロではなくワークシート上で行われている…
という感じなんだと思います。

というふうに考えると、
>Range("A1").Border.LineStyle="True"
は、なぜ「True」を""で囲ったらいけないかというと、
この「True」は、マクロ内の処理でのみ使うものであって、
ワークシートに直接書き込んで、計算や処理を行うものではないってことです。
たぶん。

【49724】Re:ダブルクォーテーション
発言  bykin  - 07/6/18(月) 21:51 -

引用なし
パスワード
   こんばんわ。

>つまり、"=D3"っていう文字列を打ち込んでいるわけですよ。

セルに先頭に = の付いた文字列を入れると、エクセルが数式と認識して
適切な処理をする・・・
っていう理解でええと思います。

>この「True」は、マクロ内の処理でのみ使うものであって、
>ワークシートに直接書き込んで、計算や処理を行うものではないってことです。

これがちょっと違うのがややこしい(^^;;
セルに直接 TRUE や FALSE を打ち込めるんですわ。(全部大文字になる)
手動でも入れられるし、マクロでも
ActiveCell.Value = True
なんてやったらわかります。
TRUE = 真/FALSE = 偽という意味なんで、例えばセルに =1=2 みたいな数式を入れれば
FALSE と表示されます。( 1=2 は間違いってこと)
ワークシートの TRUE/FALSE と VBA の True/False では数値変換したときの値が、
TRUE = 1/True = -1 という違いがあります。( FALSE/False はどっちも 0 )

LineStyle = "True" が、ダメな理由は前に書いたとおり
「数値で指定すべきとこを文字列で指定してる」からですわ。

よろしゅーに。
ほな。

【49740】Re:ダブルクォーテーション
お礼  わさび  - 07/6/19(火) 9:34 -

引用なし
パスワード
   ▼bykin さん:


>>つまり、"=D3"っていう文字列を打ち込んでいるわけですよ。
>
>セルに先頭に = の付いた文字列を入れると、エクセルが数式と認識して
>適切な処理をする・・・
>っていう理解でええと思います。

フォロー、ありがとうございます。

>
>>この「True」は、マクロ内の処理でのみ使うものであって、
>>ワークシートに直接書き込んで、計算や処理を行うものではないってことです。
>
>これがちょっと違うのがややこしい(^^;;
>セルに直接 TRUE や FALSE を打ち込めるんですわ。(全部大文字になる)
>手動でも入れられるし、マクロでも
>ActiveCell.Value = True
>なんてやったらわかります。
>TRUE = 真/FALSE = 偽という意味なんで、例えばセルに =1=2 みたいな数式を入れれば
>FALSE と表示されます。( 1=2 は間違いってこと)
>ワークシートの TRUE/FALSE と VBA の True/False では数値変換したときの値が、
>TRUE = 1/True = -1 という違いがあります。( FALSE/False はどっちも 0 )
>
>LineStyle = "True" が、ダメな理由は前に書いたとおり
>「数値で指定すべきとこを文字列で指定してる」からですわ。

あぁ、そうか。そうですね。
間違った例を、そのまま引用したらダメですよね。すみません。

True/Falseの件も、セルに直接書き込んでも使えることはとりあえず棚に上げて、
今回はセルに書き込まないで使うということを言いたかったのですが、
なかなか難しいですね…(-_-;

勉強させていただきました。ありがとうございます。

5635 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free