アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは

選択した複数のセルの先頭に文字を追加するマクロを書いたのですが、
どうにもうまくいきません。

以下のプロシージャで実行したら,「型が一致しません」と出て処理されません。
何がいけないのでしょうか?

作成しようとしてるプロシージャ
実行前    実行後     
・国語   →The国語
・英語   →The英語
・数学   →The数学


↓私が作ったプロシージャ

Sub 選択した文字列にアポストロフィーを追加する()
Dim t As Range
 Dim d As Range
Dim Moji As String
Moji= "The"

Set t = Application.InputBox("文字列を追加する範囲をドラッグしてください", Type:=8)

For Each d In t
t= Moji & t
Next d

End Sub


選択した文字列に一片に文字列を追加できるとすごい助かるのですが、うまくいかないです。

A 回答 (3件)

For Each d In t


t= Moji & t
Next d

この部分を、

For Each d In t
d = Moji & d
Next d

に変更したらうまくいきました。

tはinputboxで選択した範囲で、その中からひとつずつセルを取り出す変数がdですので、
dに対してMojiを追加する必要がでます。
    • good
    • 0

文字列の頭にアポストロフィを付けても意味はありませんが、このアポストロフィのことを、「接頭辞-> PrefixCharacter 」と言います。

Lotus1-2-3で使われていた時の名残だと思います。

>For Each d In t
>t= Moji & t
>Next d

変数の使い回しは、この場合は不可です。
本来は、ある程度変数の名前は決めたほうがよいのですが。


Sub 選択した文字列にアポストロフィーを追加する()
 Dim t As Range
 Dim d As Variant
 Dim Moji As String
 Moji = "The"

 Set t = Application.InputBox("文字列を追加する範囲をドラッグしてください", Type:=8)
 If t Is Nothing Then Exit Sub
 For Each d In t
  d.Value = Moji & d.Value
 Next d
End Sub

'-------------------
私なりに考えてみたコード
'' 選択した文字列にアポストロフィーを追加する
''という命題に従いました。

'//
Sub SelectedChar_addSingleQuote()
 Dim Rng As Variant
 Dim c As Range
 
 On Error Resume Next
 Application.DisplayAlerts = False
 Set Rng = Application.InputBox("文字列を追加する範囲をドラッグしてください", Type:=8)
 On Error GoTo 0
 Application.DisplayAlerts = True
 If IsEmpty(Rng) Then Exit Sub
 For Each c In Rng
  If c.Value <> "" Then
  If c.PrefixCharacter = "" Then '二度打ちは避ける
   c.Value = "'" & c.Value
  End If
  End If
 Next c

End Sub
    • good
    • 0
この回答へのお礼

こんにちは!

回答ありがとうございます。

今回も回答していただき助かります。

WindFallerさんが書いてくれたプロシージャ、参考にさせていただきます!

お礼日時:2017/12/18 15:13

for ... next 間の処理を次の様にしてください。


d.Formula = Moji & d.Text
    • good
    • 0
この回答へのお礼

こんにちは

ありがとうございます!

うまくできました!

お礼日時:2017/12/18 15:05

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A