前回、「1234511」で「12345A1-1」となるユーザー定義「00000"A"0"-"0」を使っている列で、
「12345B1」で「12345AB-1」にする方法を教えていただきましたが、さらに問題が発生しました。
「12345A67-1」という風にAの次の数字が二桁の場合が出てきて、「12345671」では
「123456A7-1」になってしまいます。前回教えていただいたコードをいじれば修正可能なのでしょうか?
新たに「12345671」の入力で「12345A67-1」となるようにしたいのです。
前回のコード
private sub worksheet_change(byval Target as excel.range)
dim h as range
on error resume next
for each h in application.intersect(target, range("A:A")) ’実際に合わせて修正
if h <> "" then
h.numberformat = "0000A0-0"
if application.istext(h) then
application.enableevents = false
h = application.replace(h, len(h), 0, "-")
h = application.replace(h, len(h)-2, 0, "A")
application.enableevents = true
end if
end if
next
end sub
No.2ベストアンサー
- 回答日時:
こんばんは!
表示形式の操作ではなく、データそのものを変えてしまうコトになりますが・・・
Private Sub worksheet_change(ByVal Target As Range)
If Intersect(Target, Columns(1)) Is Nothing Or Selection.Count <> 1 Then Exit Sub
Dim str As String
str = Target
Application.EnableEvents = False
If Target <> "" Then
If Len(str) = 7 Then
Target = Left(str, 5) & "A" & Mid(str, 6, 1) & "-" & Right(str, 1)
Else
Target = Left(str, 5) & "A" & Mid(str, 6, 2) & "-" & Right(str, 1)
End If
End If
Application.EnableEvents = True
End Sub
※ A列に入るデータの文字数は7、もしくは8という前提です。
※ 元データを変更させたくない場合は無視してください。m(_ _)m
ありがとうございます。出来ました。
元データが変わるというのは全然構いません。ユーザー定義も必要なくなるということですね。
今夜はよく眠れそうです。
No.1
- 回答日時:
次のようなコードにすればよいでしょう。
Private Sub worksheet_change(ByVal Target As Excel.Range)
Dim h As Range
Dim myStr As String
On Error Resume Next
For Each h In Application.Intersect(Target, Range("A:A")) '実際に合わせて修正
Application.EnableEvents = False
If IsNumeric(h) Then
myStr = h
If Len(myStr) = 8 Then
h = Left(String:=myStr, Length:=5) & "A" & Mid(String:=myStr, Start:=6, Length:=2) & "-" & Right(String:=myStr, Length:=1)
ElseIf Len(myStr) = 7 Then
h = Left(String:=myStr, Length:=5) & "A" & Mid(String:=myStr, Start:=6, Length:=1) & "-" & Right(String:=myStr, Length:=1)
End If
End If
Application.EnableEvents = True
Next
End Sub
この回答への補足
ご回答ありがとうございます。
出来た!と思ったのですが、前回の「12345B1」で「12345AB-1」にすることが出来なくなりました。
前回のコードのどこかを追加すればいいのかと思うのですが、素人ゆえ分かりません。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロ初心者(;◔ิд◔ิ) 条件一...
-
VBAで保存しないで閉じると空の...
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
エクセルで、「いいね」のよう...
-
エクセルマクロで、別のブック...
-
excelで直前に参照していたブッ...
-
エクセル関数>参照ファイル名...
-
エクセルで空白行を削除する ...
-
LDPlayerのマクロの編集方法を...
-
エクセル マクロ名にブック名...
-
Excelマクロで、稼働中のマクロ...
-
【Excel】マクロの保存先について
-
[フィルターオプションの設定]...
-
複数のマクロボタンをまとめて...
-
エクセルの、記録を終了したマ...
-
エクセルの表を複数枚印刷した...
-
Excel VBAでオートフィルタで抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じシート内にイベントプロシ...
-
リストボックスで選択したexcel...
-
VBAで保存しないで閉じると空の...
-
Excel マクロの編集がグレーに...
-
WPSOffice_マクロの有効化について
-
エクセル関数>参照ファイル名...
-
Excelのマクロでボタンを押すと...
-
エクセル ボタンに設定したマク...
-
エクセルで、「いいね」のよう...
-
エクセルの表を複数枚印刷した...
-
エクセル マクロ名にブック名...
-
【Excel VBA】マクロでExcel自...
-
エクセルの、記録を終了したマ...
-
マクロの保存先、開いてるすべ...
-
エクセル;相対パスを絶対パスへ...
-
複数のマクロボタンをまとめて...
-
VBAについての質問です
-
エクセルで空白行を削除する ...
-
エクセルマクロで、別のブック...
-
VBA Shapes コピーと名前
おすすめ情報