EXCEL VBA のREPLACE関数で以下の使い方をすると、型が違います!とエラーになります。どこがちがうのでしょうか?
D列に図書分類が入っていますが、1文字目の分類種別(F、M、N、P、B,Y)が大文字で入っている場合は小文字に置き換えたいのです。
dim W as string
for i=0 to 15
W = Range("D" & 3 + i)
分類 = Left(W, 1)
Select Case 分類
Case "F"
Range("D" & 3 + i) = Replace(W, 1, 1, "F")
Case "M"
Range("D" & 3 + i) = Replace(W, 1, 1, "M")
Case "N"
Range("D" & 3 + i) = Replace(W, 1, 1, "N")
Case "P"
Range("D" & 3 + i) = Replace(W, 1, 1, "P")
Case "B"
Range("D" & 3 + i) = Replace(W, 1, 1, "B")
Case "Y"
Range("D" & 3 + i) = Replace(W, 1, 1, "Y")
End Select
next
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
ANo4です
全角を半角にでしたね、読み飛ばしてました。
いまの文を使うなら
Range("D" & 3 + i) = Replace(W, "F", "F", 1, 1)
ですね。
No.4
- 回答日時:
> 先頭文字だけ変換したいのです。
VBAのヘルプより
Replace(expression, find, replace[, start[, count[, compare]]])
Replace 関数の構文は、次の名前付き引数から構成されます。
指定項目 説明
expression 必ず指定します。置換する文字列を含む文字列式 を指定します。
find 必ず指定します。検索する文字列を指定します。
replace 必ず指定します。置換する文字列を指定します。
start 省略可能です。引数 expression 内の内部文字列の検索開始位置を指定します。この引数を省略すると、1 が使用されます。.
count 省略可能です。置換する文字列数を指定します。この引数を省略すると、既定値の -1 が使用され、すべての候補が置換されます。
compare 省略可能です。文字列式を評価するときに使用する文字列比較のモードを表す数値を指定します。設定する値については、次の「設定値」を参照してください。
Range("D" & 3 + i) = Replace(W, "F", "f", 1, 1)
ですね。
> 簡単な質問をしますが、HELPで関数を調べる場合、マクロ処理の画面でするのですか?調べ方を教えてください。
マクロの画面でHELPを調べないとマクロのHELP(VBAのメソッドなど)が表示されずにワークシート関数のHELPが出てしまいますので間違った記述をすることになります。
No.3
- 回答日時:
>mid,strconv命令はわかりますが、vbnarrowを知りません。
んーと。有り体に言えば,それでは「命令を判っている」とは全く言えません。
勉強のやり方:次の通りに練習しましょう。
VBE画面でオブジェクトブラウザを開く
StrConvを検索する
見つけたらオブジェクトブラウザの?ボタンをクリックする
StrConv関数のヘルプが現れるので,熟読する。たとえば関数の書式(引数の書き順),引数の所定の定数の種類,内容,そして使用例を良く見る。
----Excel2003VBAのヘルプより抜粋----------
構文
StrConv(string, conversion, LCID)
名前付き引数 conversion には、次のいずれかの定数または値を指定します。
定数 内容
vbNarrow 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。
使用例
次の例は、StrConv 関数を使って、Unicode 文字列をANSI 文字列に変換します。
Dim i As Long
Dim x() As Byte
x = StrConv("ABCDEFG", vbFromUnicode) ' 文字列を変換します。
For i = 0 To UBound(x)
Debug.Print x(i)
Next
-----ここまで-----------
同様に。
>私の命令のどこがよくないか指摘してほしいです
こちらも上述同様,Replace関数のヘルプをオブジェクトブラウザを手がかりに呼び出し,構文と使用例を見ながら作成します。
ただしこちらは探してみると,複数種類のReplaceがある事が判ります。
1.rangeオブジェクトを対照にしたreplace
2.StringsのReplace
3.WorksheetFunctionのReplace
1については置換の操作の命令なので,今回は関係有りません。
そしてヘルプを確認してみると,あなたが使ってみたのは3番のreplace関数であることが判ります。こちらはエクセルのワークシート関数をVBAで呼び出して利用する方法です。その場合,こちらのreplace関数のヘルプの使用例にあるように
結果 = application.worksheetfunction.replace(arg1, arg2, arg3, arg4)
と書かなければいけません。
2番は3番と違い,ExcelVBA自体に実装されたreplace関数です。2番についてもヘルプを出してみると,構文から3番と全く違うことが判ります。
結果 = replace(対象の文字列全体,検索文字列,入れ替える文字列)
No.2
- 回答日時:
ん?
半角の小文字: abcde
半角の大文字: ABCDE
全角の大文字: ABCDE
sub サンプル()
dim w as string
for i = 3 to 18
w = cells(i, "D")
mid(w, 1, 1) = strconv(left(w, 1), vbnarrow)
range("D" & i) = w
next i
end sub
この回答への補足
失礼しました。大文字、小文字ではなく全角、半角の間違いでした。
回答で
mid,strconv命令はわかりますが、vbnarrowを知りません。
教えてほしいのと、私の命令のどこがよくないか指摘してほしいです。
勝手なおねがいですみません。
No.1
- 回答日時:
Range("D" & 3 + i) = Replace(W, "F", "f")
にしてください。詳しくはHELPでReplaceを調べてください。
この回答への補足
(大文字、小文字ではなく全角、半角の間違いでした。)
私の参考本では
REPLACE("[文字列]",[開始位置],[文字数],["置換文字列"])
となっています。
そちらの処理ですと、該当セルに"F"があればすべて"f"に置き換えてしまうのでは?
先頭文字だけ変換したいのです。
簡単な質問をしますが、HELPで関数を調べる場合、マクロ処理の画面でするのですか?調べ方を教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) Excel vba で1と10を正確に判断させる方法を教えてください。 TからU列に1と入力があれば 3 2022/12/26 16:54
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordの脚注を,1)・・2)・・3)...
-
「WORD」での作業 日本語・英...
-
エクセルでシートにある赤文字...
-
箇条書きのアタマに一括で「・...
-
ワードで半角英数の文字だけ選...
-
画像にあるように句読点「、」...
-
Wordデータから,特定の単語を...
-
wordで、アルファベットのみの...
-
Word相互参照の文字を一括で変...
-
Excel 上付き(下付き)文字の...
-
セル内の一部の色と文字列の置換
-
キングソフトライター2012で質...
-
ワードの表への入力について
-
ワードで赤字のみを削除する方法
-
wordで文字の置換をマクロで実...
-
ワードの置換で、文字列の前後...
-
アクセス 「#N/A」が置換、変...
-
Wordで【相互参照】で挿入した...
-
Wordでカッコで括った文字を一...
-
ワードの表の中の値の表示形式...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでシートにある赤文字...
-
Excelの表中,数字の「1」をす...
-
ワードで赤字のみを削除する方法
-
Wordでカッコで括った文字を一...
-
ワードで半角英数の文字だけ選...
-
箇条書きのアタマに一括で「・...
-
Wordデータから,特定の単語を...
-
ワードの表の中の値の表示形式...
-
excelマクロ ボタンを押して文...
-
「WORD」での作業 日本語・英...
-
Wordの脚注を,1)・・2)・・3)...
-
wordで特定の色だけ印刷しない方法
-
エクセルで、コンマをピリオド...
-
word 2003で、赤い文字(あるい...
-
Word相互参照の文字を一括で変...
-
EXCEL2010のハイパーリンク先の...
-
英数字のフォント「Century」に...
-
ワードで太字になっているとこ...
-
セルの中の不要な文字を削除し...
-
word である文字をすべてイタリ...
おすすめ情報