3
ブック内のすべてのワークシートの疑問符を見つけて置き換えるために、VBAコードを書きました。しかし、それは動作していない、誰かが私が間違っていたかを見て私を助けることができますか?Excel VBA質問記号の置換
Sub ReplaceQM()
Dim lRow As Long
Dim lCol As Long
totalSheet = ThisWorkbook.Sheets.Count
MsgBox totalSheet
For x = 1 To totalSheet
lRow = ThisWorkbook.Sheets(x).Cells(Rows.Count, 1).End(xlUp).Row
lCol = ThisWorkbook.Sheets(x).Cells(1, Columns.Count).End(xlToLeft).Column
For Z = 1 To lRow
For i = 1 To lCol
getPos = InStr(1, ThisWorkbook.Sheets(x).Cells(Z, i).Value, "~?")
If getPos > 0 Then
ThisWorkbook.Sheets(x).Cells(Z, i).Value = Replace(ThisWorkbook.Sheets(x).Cells(Z, i).Value, "~?", " ")
End If
Next i
Next Z
Next x
End Sub
(a)はそれが正常に〜 ''代わる私のためのスペースと?。チルダが前に付いているものだけでなく、すべての疑問符を置き換えたい場合は、コード内の2つの箇所のチルダを取り除きます。 (b)各用紙の最初の行に連続した見出しがない場合は、最初の空白の前の列までのみ置き換えられます。これは意図的なものですか? (c)グラフであるシートがあれば、コードがクラッシュする。 'Sheets'ではなく' Worksheets'を反復する方がよいでしょう。 – YowE3K
(a)チルダを削除しましたが、現在は正常に動作しています。よかった。ありがとう。 (b)はい、すべてのユーザーが使用する標準テンプレートが存在するため、意図的です。 (c)あなたのアドバイスに従って、シートをワークシートに変更しました。ありがとうございます@ YowE3K –
私は '〜'を入れて次の文字をリテラルとして取るようにします。これは、このリンクのように '*'のようなものに取って代わる方法です:https://support.microsoft.com/en-gb/kb/214138 –