Excel VBA質問箱 IV

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

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


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

【78407】ダブルクォーテーション置換 はてなな 16/9/13(火) 10:30 質問[未読]
【78408】Re:ダブルクォーテーション置換 β 16/9/13(火) 10:42 発言[未読]
【78409】Re:ダブルクォーテーション置換 はてなな 16/9/13(火) 11:23 発言[未読]
【78410】Re:ダブルクォーテーション置換 β 16/9/13(火) 11:34 発言[未読]
【78411】Re:ダブルクォーテーション置換 はてなな 16/9/13(火) 13:38 発言[未読]
【78412】Re:ダブルクォーテーション置換 β 16/9/13(火) 21:50 発言[未読]
【78413】Re:ダブルクォーテーション置換 β 16/9/13(火) 21:54 発言[未読]

【78407】ダブルクォーテーション置換
質問  はてなな  - 16/9/13(火) 10:30 -

引用なし
パスワード
   ダブルクォーテーション置換

vbaで、

"A" & "B"を
' 'A' ' & ' ' B' ' に変更したいです。

セルの先頭のクォーテーションが変換できません。
以下になります。

 A' ' & ' ' B' '


どうしたらいいですか?

""""を
"' '"に置換してます。

【78408】Re:ダブルクォーテーション置換
発言  β  - 16/9/13(火) 10:42 -

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

セルに入力する文字列の先頭の ' (シングルクォーテーション) は、文字列なんだよと
エクセルに強制的に認識させる制御文字になります。

たとえば セルに 'ABC と 4桁打ち込んで =LEN(そのセル) とやると、4 ではなく 3 になりますね。

なので、

そのセル.Value= "'" & 変換文字列

こうしたらいかがでしょうか。

【78409】Re:ダブルクォーテーション置換
発言  はてなな  - 16/9/13(火) 11:23 -

引用なし
パスワード
   お返事ありがとうございます。

セルに入力する文字列の先頭の ' (シングルクォーテーション) は、文字列なんだよと
エクセルに強制的に認識させる制御文字になります。


は理解しております。


文字として
"A" & "B"を
' 'A' ' & ' ' B' ' に変更したいです。


以下のケースだと
そのセル.Value= "'" & 変換文字列

今までと変わりません。

"'" & "’ '"としても

【78410】Re:ダブルクォーテーション置換
発言  β  - 16/9/13(火) 11:34 -

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

>以下のケースだと
>そのセル.Value= "'" & 変換文字列
>
>今までと変わりません。
>
>"'" & "’ '"としても

まず、セットしているコードをそのまま正確にアップしてもらえませんか?

私が誤解したんでしょうかね、「"A" & "B" 」という文字列のことだと思っていたんですが?

それと変換前の " は 半角記号ですね。
変換後の ' も 半角記号ですね。

変換しても、見た目は変わりませんけど、変換したいんですよね?

Sub Test()
  Dim s As String
  
  s = """A"" & ""B"""
  
  MsgBox "今から " & s & " を変換して A1 と A2 に書きこみます"
  
  Range("A1").Value = Replace(s, """", "''")
  Range("A2").Value = "'" & Replace(s, """", "''")
  
End Sub


もし、私の勘違いでなければ

【78411】Re:ダブルクォーテーション置換
発言  はてなな  - 16/9/13(火) 13:38 -

引用なし
パスワード
   ダブルクォーテーションをシングルクォーテーションに変更したい

変換前は半角ダブルで
返還後は全角シングルへ
Sub 置換()
 Dim mystr(1, 32) As String
 
   mystr(0, 0) = "MI"
   mystr(1, 0) = "M I"
  
   mystr(0, 1) = "NI"
   mystr(1, 1) = "N I"
  
   mystr(0, 2) = "GA"
   mystr(1, 2) = "G A"
  
   mystr(0, 3) = "SI"
   mystr(1, 3) = "S I"
  
   mystr(0, 4) = "RI"
   mystr(1, 4) = "R I"
  
   mystr(0, 5) = ":〜"
   mystr(1, 5) = ":   〜"
  
   mystr(0, 6) = "OW"
   mystr(1, 6) = "O W"
  
   mystr(0, 7) = "7WV"
   mystr(1, 7) = "7 WV"
  
   mystr(0, 8) = "1WV"
   mystr(1, 8) = "1 WV"
  
   mystr(0, 9) = ".."
   mystr(1, 9) = "."
  
   mystr(0, 10) = "H."
   mystr(1, 10) = "H ."
  
   mystr(0, 11) = "N."
   mystr(1, 11) = "N ."
  
   mystr(0, 12) = "M."
   mystr(1, 12) = "M ."
  
   mystr(0, 13) = "G."
   mystr(1, 13) = "G ."
  
   mystr(0, 14) = "'"
   mystr(1, 14) = "’"
  
   mystr(0, 15) = "HW"
   mystr(1, 15) = "H W"
  
   mystr(0, 16) = "TK."
   mystr(1, 16) = "TK ."
  
   mystr(0, 17) = "L."
   mystr(1, 17) = "L ."
  
   mystr(0, 18) = "UD"
   mystr(1, 18) = "U D"
  
   mystr(0, 19) = "UM"
   mystr(1, 19) = "U M"
  
   mystr(0, 20) = "MA"
   mystr(1, 20) = "M A"
  
   mystr(0, 21) = "ND"
   mystr(1, 21) = "N D"
  
   mystr(0, 22) = "HA"
   mystr(1, 22) = "H A"
  
   mystr(0, 23) = "AM"
   mystr(1, 23) = "A M"
  
   mystr(0, 24) = "RA"
   mystr(1, 24) = "R A"
  
   mystr(0, 25) = "G/"
   mystr(1, 25) = "G /"
  
   mystr(0, 26) = "M/"
   mystr(1, 26) = "M /"
  
   mystr(0, 27) = "HU"
   mystr(1, 27) = "H U"
  
   mystr(0, 28) = "(P"
   mystr(1, 28) = "( P"
  
   mystr(0, 29) = "E ."
   mystr(1, 29) = "E."
  
   mystr(0, 30) = "SC"
   mystr(1, 30) = "S C"
  
   mystr(0, 31) = "CLR ."
   mystr(1, 31) = "CLR."


   mystr(0, 32) = """"
   mystr(1, 32) = "’’"
  
  
 Call 配列置換(mystr)
 
End Sub
=====================================
Sub 配列置換(ByRef mystr() As String) '配列置換
Dim i As Long
Dim jj
  
  ' On Error GoTo logout
  Application.ScreenUpdating = False
  
  With chhani
    'Debug.Print "置換" & ActiveWorkbook.name, ActiveSheet.name
    
    For i = 0 To UBound(mystr, 2)
      .NumberFormatLocal = "@"
      .Cells = Application.Substitute(.Cells, mystr(0, i), mystr(1, i))
    Next i
  End With
  
  For Each jj In chhani
     jj.Value = RTrim$(jj.Value)
     jj.Value = LTrim$(jj.Value)
  Next jj
 

End Sub


いろんなコードとくっついているので、これくらいで。
 Set chhani = .UsedRange
chhaniはシート全面にかかると思って下さい。


****ここの部分がうまく反映されないです。セルの先頭に来るときに。

   mystr(0, 32) = """"
   mystr(1, 32) = "’’"


わかりにくくてすみません。

【78412】Re:ダブルクォーテーション置換
発言  β  - 16/9/13(火) 21:50 -

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

アップされたコード、まだ目を通していません。
明日以降、時間が取れたら眺めてみますけど、それとは別に

β - 16/9/13(火) 11:34 -

でコメントしたテスト、やっていただけましたか?
で、その結果は、納得ができるものではなかったということですか?

【78413】Re:ダブルクォーテーション置換
発言  β  - 16/9/13(火) 21:54 -

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

いま、コードをちらっと眺めましたら、変換後の クォーテーションは全角にしたかったようですね。

では、私がアップしたコードの中の

   Range("A1").Value = Replace(s, """", "''")
   Range("A2").Value = "'" & Replace(s, """", "''")

これは

   Range("A1").Value = Replace(s, """", "’’")
   Range("A2").Value = "'" & Replace(s, """", "’’")

ですね。

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