プロが教えるわが家の防犯対策術!

excel マクロで、指定した列のセルに「1」を入力すると、「合計 1枚」というように、
前後に文字が自動で入るようにするにはどう書けば出来るでしょうか。
例:「100」⇒「合計 100枚」となります。

今私が出来る方法は下記のコードのものですが、設定したいシートは複数枚あり、それぞれ100回書くのは大変なので、省略できればと思っています。
別シートに記載しているものから引っ張る方法でもかまいません。
教えて頂けましたら幸いです。

Intersect(Target, Range("A1:A101")) Is Nothing = False Then

If Worksheets("sheet1").Range("A" & Target.Row).Value = "1" Then

Worksheets("sheet1").Range("A" & Target.Row).Value = "合計 1部"

With Worksheets("sheet1").Range("A" & Target.Row)

宜しくお願いいたします。

質問者からの補足コメント

  • 指定した列(A1~A101)には、リストの設定もしており、文字列を入力する場合もある為、
    マクロで1~100の数字のみを入力した時の動作を設定したいと考えております。

      補足日時:2022/03/16 12:50

A 回答 (4件)

書式設定(半角数字/文字列対応バージョン)


"合計 "0"枚";;;@
    • good
    • 1
この回答へのお礼

ありがとうございます!!

お礼日時:2022/03/16 22:32

こんにちは



マクロとのご質問ですが、マクロで行うような処理とも思えません。

>設定したいシートは複数枚あり、それぞれ100回書くのは大変なので、
>省略できればと思っています。
というのが問題点なら、以下ではいかがでしょうか?
(シートを指定して、一度実行しておくだけです)

Sub Sample()

' 以下に、対象のシートを列挙しておく。
Const sheetNames = "Sheet1,Sheet3"

For Each s In Worksheets(Split(sheetNames, ","))
s.Range("A1:A101").NumberFormatLocal = """合計 ""0""部"""
Next s
End Sub
    • good
    • 1

おはようございます。



ThisWorkbookに、下記を書けば全てのシートが対象になるかと。
Sh:シートオブジェクトですので、処理が不要なシートがあれば、ここで
判別して処理を抜ければ、やりたい事ができるかと思います。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub
    • good
    • 1

マクロを使うほどのものではありません。


書式設定でできます。
(数字を全角文字にするバージョン)
[DBNum3]"合計 "[$-ja-JP]#,##0"枚";;
    • good
    • 2

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