VB6で「”」(全角)があった場合、それを取り除く処理を行ないたいのですが、
うまくいかずエラーの赤色表示になってしまいます。
どのように記述すればうまくいくのでしょうか?教えて下さい。
ちなみに半角の場合は、InStr(wk_kensa, """") でうまくいきました。

以下が、そのエラーとなってしまう部分の記述です。

dim wk_kensa as string, wk_kensa1 as string
wk_kensa = "例えば ”を取り除く"
If InStr(wk_kensa, "”") > 0 Then
wk_kensa1 = Mid(wk_kensa, 1, InStr(wk_kensa, "”") - 1)
wk_kensa = wk_kensa1 & Mid(wk_kensa, InStr(wk_kensa, "”") + 1, 50)
end if

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

”を"と解釈してしまうようですね。



Dim wk_kensa As String, wk_kensa1 As String
wk_kensa = "例えば " & Chr(&H8168) & "を取り除く"
If InStr(wk_kensa, Chr(&H8168)) > 0 Then
wk_kensa1 = Mid(wk_kensa, 1, InStr(wk_kensa, Chr(&H8168)) - 1)
wk_kensa = wk_kensa1 & Mid(wk_kensa, InStr(wk_kensa, Chr(&H8168)) + 1, 50)
End If

とすれば、ご希望の動作をすると思います。
    • good
    • 0
この回答へのお礼

「”を"と解釈してしまうようですね。」>>そのとおりです。
上のようにやってみてうまくいきました。
早速のご回答どうもありがとうございました。

お礼日時:2001/12/01 07:16

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDim x As Integer = 0

いつもお世話になっております。

只今、本に記載してあるソースコードを手入力しています。
標記のように入力したら、『コンパイルエラー 修正候補:ステートメントの最後』というエラーが出ました。

(1)このエラーは無視してもよいのでしょうか?
(2)そもそも、変数の宣言文の後ろに=0をつけている意味がわかりません。当方VB初心者です。

よろしくお願いいたします。

Aベストアンサー

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsugi.ed.jp/vba4graduate/vba_hensuusyokika.htm
ーーー
定数のConstであればこういう書き方はOK
Sub test01()
Const x As Integer = 0
MsgBox x
End Sub
ーーー
VB.NETでは、OK
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x As Integer = 10
MsgBox(x)
End Sub
ーー
Javaでは可能であるようです
http://msugai.fc2web.com/java/var2.html
ーーーーー
>ろに=0をつけている意味がわかりません
宣言と同時に値を与える=初期化する

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsug...続きを読む

QIf myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou こちらについて教えていただきたいです。

myTorikomibi = Range("A2").Value
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, 4) = myTantou
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, 14) = myTantou
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou
For i = 1 To 3
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, i + 4) = myTorikomibi
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, i + 14) = myTorikomibi
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, i + 24) = myTorikomibi
Next i
マクロを編集しようとしましたところこちらが解読できづに困っています。
こちらだけとりだして実行しながら解読していますが混乱してしまっています。ご存知の方いらっしゃいましたら教えてください。Then以降がわかりません。よろしくお願いいたします。

myTorikomibi = Range("A2").Value
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, 4) = myTantou
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, 14) = myTantou
If myCityBUNRUINO = 2 Then Cells(myPrefNO + 3 - 47 - myCityNu, 24) = myTantou
For i = 1 To 3
If myCityBUNRUINO = 0 Then Cells(myPrefNO + 3, i + 4) = myTorikomibi
If myCityBUNRUINO = 1 Then Cells(myPrefNO + 3 - 47, i + 14) = myTorikomibi
If myCityBUNRUINO = 2 Then Cells...続きを読む

Aベストアンサー

こんにちは。maruru01です。

ヘルプはご覧になりましたか?
特に、Cellsについて。
Cellsは、

Cells(行番号, 列番号)

で、セルを参照します。
なので、各条件の時に、変数「myTantou」や「myTorikomibi」に格納されている値をそれらのセルに代入しているだけですが。
ただし、行番号が、

「myPrefNO + 3 - 47」
「myPrefNO + 3 - 47 - myCityNu」

などとちょっとややこしくなっていますが。
これも、変数「myPrefNO」「myCityNu」に入っている値から行番号が決まるというだけです。
例えば、
myPrefNO=60
myCityNu=2
なら、下の例は、
60+3-47-2=14
で、14行目となるということです。

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

QVB6の _ExtentX, _ExtentY

VB6 アプリケーションのメンテナンスをしています。
修正前後で FRM ファイルのソース差分をとって確認したところ、_ExtentX, ExtentY の値が変わっていました。

今回の修正ではいじっていないのですが、変わってしまいまってました。
名前から、水平方向と、垂直方向の領域に関するプロパティと思われるのですがどこで設定されているのか分かりません。

そこで、質問ですが

(1) このプロパティの意味は何でしょうでしょうか
(2) このプロパティ値が変わることによりどのような影響があるのでしょう
(3) このプロパティは意識する必要があるのでしょうか。

以上、ご教示願います。

Aベストアンサー

全くの素人ですが、

1 コントロール(フォーム?)のHIMETRIC単位によるwidthとheight
http://www.xtremevbtalk.com/showthread.php?t=10994
2 フォームのサイズが変わっているのではないでしょうか?
3 フォームは普通意図的にサイズ指定しているはずですので、意識の必要は無いと思います。

QMidとMid$の使い分け

MidとMid$の使い分けについて教えてください。

http://www.tsware.jp/labo/labo_32.htm

このページにあるように
$が付いた関数は文字列型の値を返し、付いていないものはバリアント型の値を返す、あります。

つまり、出力先が
数値と文字列が混在した配列(つまりvariant型)のみに$無しを用いて、
それ以外の場合には$有りを用いるということでしょうか?
合っていますか?

Aベストアンサー

#4の回答者です。

あくまでも、#4で書いたのは、現在の個人的意見で、結論的なことを言うつもりはありません。

>将来的にVBAやVBで使えなくなる可能性があるので
>Midを使った方が良い。

ずっと前に、VB.Net やC#に移行するという話があって、移行しやすいようにと考えて、いわゆる「忖度(そんたく)」して方針を合わせたつもりだったのですが、ここ数年、そういう事自体があやふやになってきたように思います。

>ただ、Midの仕様は時代遅れなものであり、(Variant型出力)
これは確かですが、

>本来はMid$が生き残るべきである。   (String型出力)
もう、これは、VB.Net では決まっていることですから、私たちがとやかく言っても始まりませんね。

論理的には、文字列を扱うのだから、出力自体は、String型でもよいのではないかとは思います。VB6系からVB.Net を後継とするべきではないかもしれませんが、VB.Netでの、同様の関数は、文字列(String型)の出力です。

私は、最初のリンク先のT's ware の内容は、速い・遅いだけの話には違いないのですが、人によっては、短絡的に「速い方がよい」という括りで価値観を決めてしまうことになりかねないと思います。

最近の話ですが、コンマ何秒の速さだけを求めることには、私は疑問に感ずることが多いです。そんなことを書いたら、相手の人は、1万回以上もループしているのだから当たり前だ、といわんばかりでした。そんな話は少しも聞いていないよ、というところですが、そういう場合は、コードは速いほうに越したことはない……、それはごもっともです。

しかし、そんな必要もない人、言い換えれば、そのような負担がない状況下では、その内部的な仕様がどうであれ、記述自体は、ノーマルなMid関数のままでもよいのでは、と考えるのです。こういう考え方を書くと、曖昧さがあるから、苛立つ人もいます。私は、どっちにしろとは、他人に対しても、自分に対しても使い分けろなんていうつもりはありません。ただ、$付き、$なし、どちらを書いても、そんなに困るものではないと思うのです。

本当の意味での、私たちの将来などは分からないけれど、今を最高のチューンしたものに仕上げると、返って、動きの取れないものになることも多いような気がします。

#4の回答者です。

あくまでも、#4で書いたのは、現在の個人的意見で、結論的なことを言うつもりはありません。

>将来的にVBAやVBで使えなくなる可能性があるので
>Midを使った方が良い。

ずっと前に、VB.Net やC#に移行するという話があって、移行しやすいようにと考えて、いわゆる「忖度(そんたく)」して方針を合わせたつもりだったのですが、ここ数年、そういう事自体があやふやになってきたように思います。

>ただ、Midの仕様は時代遅れなものであり、(Variant型出力)
これは確かですが、

...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報