No.4ベストアンサー
- 回答日時:
こんばんは。
前回の#4さんのコードはユニークだと思います。
本来は、前回の#4さんのコードをサブルーチンにしてしまっても良いわけです。
Sub chgStringFormat(arg as Range)
Selection の部分を、arg に換えて使えるはずです。
しかし、まあ、こちらもVBAを書く側として、あまり人のマクロを使うわけには行きませんもで、最初から、こちらで作り直しました。
前の書き込みのNo.4さんよりも、もう少し、エラー処理を厳しくしました。
>9-9-9とかの数字は18まであってランダムに変わります。
この条件は、元のものに従うことにしましたので、21を越えた時に、( )になります。全角/半角の入力は区別はありません。
=======================
コードの貼り付けの手順
========================
画面の下の[シートタブ]を右クリック-[コードの表示]-白い画面に貼り付ける
'<シートモジュール>
'--------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim InBuf As String
Dim OutBuf As String
Dim arBuf() As String
Dim c As Range
Dim NumberItem As String
Dim cnt As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
'U列であるかチェック(21列)
If Target.Column <> 21 Then Exit Sub
'Event の起動を制御
Application.EnableEvents = False
For Each c In Target
If VarType(c.Value) = vbDate Then
InBuf = Format$(StrConv(c.Value, vbNarrow), "yy-mm-dd")
ElseIf StrConv(c.Value, vbNarrow) Like "#*-#*-#*" And _
Len(c.Value) - Len(Replace(c.Value, "-", "", , , vbTextCompare)) = 2 Then
InBuf = StrConv(c.Value, vbNarrow)
End If
If Len(InBuf) > 0 Then
'配列に格納
arBuf() = Split(InBuf, "-")
For j = LBound(arBuf()) To UBound(arBuf())
NumberItem = arBuf(j)
If IsNumeric(NumberItem) Then '数字であるか
If CLng(NumberItem) < 21 Then '21以下であるか
OutBuf = OutBuf & Chr(&H8740 + CInt(NumberItem) - 1)
cnt = cnt + 1
Else
OutBuf = OutBuf & "(" & NumberItem & ")"
cnt = cnt + 1
End If
End If
Next j
If cnt = 3 Then '変換チェック
c.Value = OutBuf
End If
c.NumberFormat = "General"
OutBuf = ""
cnt = 0
End If
Next c
Application.EnableEvents = True
End Sub
'--------------------------------------
No.3
- 回答日時:
こんなことを質問しているのでしょうか。
本当はU列らしいが、A列とします。
全角で5-4-2のような文字列をコピーして、A列に貼り付けると
(5)-(4)-(2)になる。以下「まる1」などは(1)のように表示されます。読み変えてください。
シートのチェンジイベントに
Private Sub Worksheet_Change(ByVal Target As Range)
a = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
b = Array("", "(1)", "(2)", "(3)", "(4)", "(5)", "(6)", "(7)", "(8)", "(9)")
If Target.Column = 1 Then
For i = 0 To UBound(a)
Target.Replace What:=a(i), Replacement:=b(i)
Next i
End If
End Sub
を貼り付ける。
No.2
- 回答日時:
こんにちは。
「シートのチェンジイベント」というのは、たぶん、イベント・ドリブン型のマクロをシートモジュールに入れるということだと思います。シートモジュールに貼り付ければよいとはいうのは分りますが、元の話が見えてないので、今のところは不可能だと思います。
>9-9-9とかの数字は18まであってランダムに変わります。補足頂ければ幸いです。
というか、「マクロをこちらで教えてもらったのですが」という元のマクロは、どんなだったのかなって思います。たぶん、前回、解決しているから、こうして次のご質問が出たのだと思います。
しかし、全角/半角混合/半角のみとか、オートシェイプで○を入れるのとか、Unicodeの丸付き数字に置き換えるのか分りませんが、そのマクロに渡す引数になるものが見えていません。ご質問者さんが満足されるようなマクロは、とても私には出来ません。
例
9-9-9
12-12-3
など。
元のマクロは、フォントの大きさ、種類、標準スタイルのセル幅など、一定の条件の上で作られたものだと信じますが、上記のような問題をどのようにクリアされたのでしょうか、私にはわからないことだらけです。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=792728
回答ありがとうございました。↑のが元の質問です。No.4の所で教えてもらったマクロでうまくいきましたが貼り付けた瞬間にマクロが作動するようにしたいのです。できますか?
No.1
- 回答日時:
こんんばんは。
シートのチェンジイベントで処理すればいいです。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 21 And Target.Value = "9-9-9" Then
'ここに処理を記述
End If
End Sub
回答ありがとうございます。
シートのチェンジイベントとか全く知らないのですがどうすればいいんでしょうか?
9-9-9とかの数字は18まであってランダムに変わります。補足頂ければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA 文字列変換と指定した列にある日時データから時間を削除する方法について 2 2022/04/14 15:23
- Excel(エクセル) VBA 指定した列にある日時データから時間を削除する方法について 4 2022/04/14 11:17
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) 別シートに順番で貼り付け 2 2023/04/13 19:53
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Access(アクセス) エクセルのマクロについて教えてください。 2 2023/02/04 14:20
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- その他(ブラウザ) cvsファイルをダウンロードすると、自動で拡張子がExcelのものになる 5 2022/07/20 21:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/15 16:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで数字を入れたら対応する...
-
Excel VBAでのWorksheet_Change...
-
エクセルで複数のシートのクリ...
-
エクセルファイルを開いた回数...
-
Excelのシート上のShapeにイベ...
-
エクセル:セル内の文字列の最...
-
エクセルで特定の行だけ行削除...
-
エクセルで○をつけるマクロ設定
-
【エクセル】「実行時エラー’10...
-
エクセルのチェックボックス誤作動
-
Excelのマクロ 検索範囲を広げ...
-
エクセルVBAで実行中画面を...
-
【エクセル】フリーワード検索...
-
Excelでランダムで選んだ行を別...
-
「マクロが含まれているファイ...
-
エクセルマクロでファイル名や...
-
EXCELのダイアログシートって、...
-
エクセルVBAで内容変更のたびに...
-
長い時間かかるマクロが実行中...
-
エクセルのマクロの実行が途中...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでのWorksheet_Change...
-
Excelで数字を入れたら対応する...
-
エクセルファイルを開いた回数...
-
エクセルで複数のシートのクリ...
-
エクセルで特定の行だけ行削除...
-
自分の専門分野の仕事。初見で...
-
Excelのシート上のShapeにイベ...
-
長い時間かかるマクロが実行中...
-
【エクセル】フリーワード検索...
-
エクセル シート内の一番下のセ...
-
【エクセル】「実行時エラー’10...
-
Excelでセル内の文字をファイル...
-
エクセル:セル内の文字列の最...
-
セルの一部分だけを太字にする方法
-
EXCELのダイアログシートって、...
-
フォルダ内にある全ファイルの...
-
シートではなくBOOK間で重複し...
-
エクセルのワークシート(テン...
-
エクセル上にシェイプで二重丸...
-
前月分を次月シートに繰越でき...
おすすめ情報