[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAセル範囲に名前を付ける』(やっぱり初歩)
セル範囲に名前つけたいのですがR1C1型式ではなくA1形式で表す方法が分かりません。 馴染みのあるA1形式で処理する方法をご指導ください。 Evaluateでもダブルクウォーテンション(")を使いますが、その区切り方が 良く分かりません
マクロの記録 (正常動作) ActiveWorkbook.Names.Add Name:="テスト", RefersToR1C1:="=Myシート!R1C1"
A1型式 (エラー無いが不明) ActiveWorkbook.Names.Add Name:="テスト", RefersTo:="Myシート!" & Range("A1")
この様な質問で恐縮ですが宜しくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows8 >
> マクロの記録 (正常動作) > ActiveWorkbook.Names.Add Name:="テスト", RefersToR1C1:="=Myシート!R1C1"
ActiveWorkbook.Names.Add Name:="テスト", RefersTo:="=Myシート!$A$1"
(半平太) 2015/12/04(金) 12:51
早速のご返答ありがとうございます。 この様な事でいつも躓いています。見ればそのままの事なんですね。 (やっぱり初歩) 2015/12/04(金) 13:01
追記 Evaluateを使った場合どの様にするのでしょうか?
>Evaluateを使った場合どの様にするのでしょうか?
済みませーん。意味がよく分からないのですが、 何をEvaluateするんでしょうか?
こんなことですか? ↓ msgbox Evaluate("テスト")
(半平太) 2015/12/04(金) 13:17
すみません。質問の仕方そのものから良く分からず・・・
= Evaluate("DateIf(A2,Today(), ""Y"")") …を例にします
(" ")を多用しながら記述する時の規則が分からないのです。 時には(' ')で括ったりするその書き方の事なのです。
理解できていない私は何時も諦めてきました。 本当の初歩から勉強したいと思います。宜しくお願いします。
(やっぱり初歩) 2015/12/04(金) 17:31
以下のようなことかと思います。
数式内での ' (シングルクォーテーション)
1)'C:\hoge\[ABC.xls]sheet1'!A10
他ブックを参照する場合は、必須。
2)'1月'!A10
頭が数字で始まるシート等は、同じブック内のシートでも必要
文字列内の " (ダブルクォーテーション)
これは数式文字列に限ったことではなく、文字列内の " (ダブルクォーテーション)の記述ルール。
1)まず 文字列の前後に " をつける。これは、文字列がここからここまでという区切り文字。
"hogehogehogehoge"
2)文字列内(↑でいえば hogehogehogehoge)に 文字としての " が存在する場合は、"" と2つ重ねて記述。これはお約束。
●ということですが、書いているうちにわからなくなる場合もありますね。 1つの方法としては、 hogehogehogehoge が DateIf(A2,Today(), "Y") こんな文字列だったケース。 文字列中の " を 文字列で使っていない別の文字、たとえば @ を使って記述。DateIf(A2,Today(), @Y@) この文字列を " で囲んで "DateIf(A2,Today(), @Y@)" 。で、この文字列の中の @ を "" に編集で置換。 結果は "DateIf(A2,Today(), ""Y"")"
(β) 2015/12/04(金) 17:48
本当に基礎からのご指導有難うございます。
私の理解は次の様です。間違っていたらご指摘下さい。 (1) 区切り文字 @ (アットマーク) : @Y@ = ""Y"" (2) 区切り文字 ' (シングルクォーテーション): セル内での数式扱いでVBA記述(Evaluate等で処理する場合) (3) 区切り文字 " (ダブルクォーテーション) : リテラル値をVBAで扱う場合 文字としての " が存在する場合は ""ooo""
又、時々 """OOO""" の様に3個並んだものも見かけます。この時とはどんな時なのでしょうか?
(やっぱり初歩) 2015/12/04(金) 19:07
>>"""OOO"""
まず先頭と末尾の " は文字列を囲んだ " ですね。 なので、中身は ""000"" 。文字列中の "" は " の意味ですから 文字列としては "000" という 5桁ですね。
わかりにくい場合は、
MsgBox """OOO"""
こうしてみれば、 "000" と表示されますので、わかりやすいかと思います。
ちなみに MsgBox "000" は 000 の3桁ですね。
(β) 2015/12/04(金) 19:15
ちなみに、どうして「"」を「""」と書くのかというおはなし。
エクセル君になったつもりで、考えてみてください。
VBAのコードが、 MsgBox "あいう"えお となっていたとして
MsgBox
ここまで見て、エクセル君は MsgBoxを出すんだな と考えます。
MsgBox "
まずは文字列だな、
MsgBox "あいう
文字列で「あ」「い」「う」、それから?
MsgBox "あいう"
あいう までで文字列終了だ。あとに変数とか続くかな?
MsgBox "あいう"えお
おいおい、えおってなんだよ。そんなの知らないよ、エラーだよ。
こうなってしまいます。
もし本当に「あいう"えお」と表示したかった場合なら
「"」に、「これは文字列終了の合図ではありませんよ、「"」という文字として読んでくださいね」
という意味の記号をくっつけます。この記号が「"」です。
「"」の文字1つごとに、記号をそれぞれ1つ付けます。
(なお、こういった記号を付けることをエスケープするといいます。Like演算子にも、
専用のエスケープ記号があります。興味あれば調べてみてください。)
ということでVBAを書く側は、文字としての「"」を表現したいときは「""」と書きます。
「"」を2つ続けて書きたいときは「""」を2つ続けて書きます。
エクセル君は、文字列中で「""」を見つけたら「"」と置き換えて解釈します。
( 佳 ) 2015/12/05(土) 09:52
> (1) 区切り文字 @ (アットマーク) : @Y@ = ""Y""
え?
意味と手順を混同していませんか?
その文字列中に出てこない文字・文字列なら何でも構わないのです。
●でも◆でも。なんなら「いろはにほへと」でも。
その文字に意味などないのですから。
勝手に想像するにβさんが @を使われた理由は
IMEがoffのまま ワンストロークで打てて 文字列中に出てくる可能性が低そう
だからではないでしょうか。
( 佳 ) 2015/12/05(土) 10:10
こんな方法でも名前をつけれます。 こちらのほうが私にはわかりやすいです。 http://www.moug.net/tech/exvba/0050107.html
Sheets("Myシート").Range("A1").Name = "テスト"
割り込み失礼しました。
(マナ) 2015/12/06(日) 10:48
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.