[[20051119224811]] 『"”"と記述したい』(素人) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『"”"と記述したい』(素人)

 ご教授ください

 フォームのボタンにマクロで、

 Selection.Replace What := ")", Replacement := "”", LookAt := xlPart, _
        SearchOrder := xlByRows, MatchCase := FALSE, SearchFormat := FALSE, _
        ReplaceFormat := FALSE

 と記述しましたが、エラーになります。

 どうしてかわかりません(;;
 お願いいたします。教えてください!

 思ったより難しいネ、これ。
オートコンプリートで全角引[”]を半角["]に直す機能が働いているのと、
半角引用符["]を一つを、半角引用符["]二つのの間で表現しようと思うと、
Replacement := """"
ということになるけど、これだと半角引用符["]一つだけにしかならないし、
そもそもが全角引用符[”]、半角引用符["]一つだけって書き方自体を受け
付けてくれないみたい?
部分一致だから数式"=CHAR(8521)"ってワケにも行かないようであるし・・。
とりあえず緊急避難。
 
Range("X1").Formula = "=CHAR(8521)"
Selection.Replace What:=")", Replacement:=Range("X1").Value, LookAt:=xlPart・・・
 
セルに全角引用符[”]を返す関数を入力、置換文字にそのセルの値を利用。
上記で置換はの問題はないけど、正確にどうコーディングすべきは私では
わかりませんでした。
コーディングのプロ、もしくは弥太郎氏&元祖kenbou氏の参加を望む。
(みやほりん)[増援フラグ]ほしいかも。

みやほりん様、ありがとうございます。
緊急避難方法で動作確認できました。

 とりあえずお役には立てたようでよかったです。
が、後学のために正確な書き方所望。
(みやほりん)


 ”なんて使おうと思ったことないから、気づきませんでしたけど
 本当ダメなんですね。
 とりあえずChrを使うなんてのはどうでしょう。
 (ramrun)

 Selection.Replace What:=")", Replacement:=Chr(&H8167), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

 援軍北〜ありがたや〜。Chrは0-255だと思うちょりました。
しかし、&H8167 はどうやって参照するんでしょう。
Asc関数で調べたら、-32408 ・・・?
ちなみに、Replacement:=Chr(-32408) でも出来ました。(みやほりん)


 随分遅くまで起きてますね(汗)。

 H8167はIMEパッドの文字一覧で確認した ”のシフトJISコードです。
 2進数に直すと 1000 0001 0110 0111 となり、
 符号付2進数で表すので最上位ビットが立つと負数の-32767(10進)となります。
 そこにH167を足すことになります。これは10進で359です。
 よって16進の8167は10進の-32408ということなんですじゃ。
 (ramrun)

 ありがとうございます。えーっと、
H  16進数を表す
8  1000        -32767
1  0001        +2^8
6  0110        +2^6+2^5
7  0111        +2^2+2^1+2^0   = -32408
ってことかしら。
理屈はわかったような気はするけど、しかし、ここまで2時間・・・ (T_T)
(みやほりん)


 そーです。

  10進    16進
  32767   H7FFF
  32766   H7FFE
     ・     ・
      2   H0002
      1   H0001
      0   H0000
     -1   HFFFF
     -2   HFFFE
     ・     ・
 -32766   H8001
 -32767   H8000

 Hは16進を表すHexaです。
 ”はシフトJISコードで0x8167と表しますが、これもheXaです。
 (ramrun)

 引き続きありがとうございます。
[0x]はそういう意味でしたか。解説してもらうと納得です。
では、[&H8167]の[&]は何なんだ、という疑問ですが、Hex関数(vba関数)の
ヘルプに下記記述がありましたので、抜粋しておきますね。
 
////////////////////////////////////////////////////////////////
Hex 関数
(中略)
適切な範囲の数値の前に &H を付けて記述すると、値を直接 16 進数で記述する
ことができます。たとえば、10 進数の 16 を &H10 のように 16 進数で表記す
ることができます。
////////////////////////////////////////////////////////////////
(みやほりん)

 ありゃぁ、>弥太郎氏&元祖kenbou氏の参加を望む。って私の力添えを所望されとったみたいでんなぁ。
この際申し上げときますけど、私の得意分野は関数、ピボットテーブルでっせ。(笑
せやからマクロはからっきしあきまへんねんで、えぇ、えぇ。(笑
今度関数、ピボットテーブルで手ぇにおえんのんが出てきましたら仰有っておくんなはれ。
押っ取り刀で馳せ参じます〜。(笑
       関数のタツジン(弥太郎)


 >ピボットテーブルを手ぇのうちにいれるかすりゃ、なんちゅうことおまへんねんけど
と言う発言から2ヶ月あまり、
なるほど、手ぇのうちにいれたっちゅうわけですなぁ。
しかも得意分野とは。弥太郎さん恐るべし。(みやほりん)


 そうですか。2ヶ月ですか。みなさんがんばってますね!
                         (ホミホミ)

 キャハハ
 >手ぇのうちにいれたっちゅうわけですなぁ
 世の中そんな甘い仕組みになっとりまへんでぇ。(笑
 押っ取り刀で馳せ参じます〜、コテン、「アイテッ!」(おぃ、走るな!)
      タツジン→立塵(弥太郎)     

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.