No.5ベストアンサー
- 回答日時:
操作例:
A列に0000"A"0-0のユーザー定義の表示形式を取り付けておく
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートの内容を全て消去し、改めて下記をコピー貼り付ける
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
ファイルメニューから終了してエクセルに戻る
A列に123451や1234A1とデータを記入する。
手でやりますとお話ししたことを、代わりに機械がやってくれます。
No.6
- 回答日時:
No.4です。
D列で操作したい!というコトなので、
前回のコードでOKであるという前提です。
Columns(1)を
Columns(4) または Range("D:D")
に変更してみてください。
尚、前回のコードの場合、頭が「0」から始まる場合はいくら7文字を入力しても
「入力値が不正」だとメッセージボックスがでますので、
D列の表示形式を「文字列」にして操作してみてください。
何とかご希望通りになれば良いのですが m(_ _)m
No.4
- 回答日時:
こんにちは!
横からお邪魔します。
No.3さんの補足を読ませていただくと、最初の質問内容と状況が違ってきていますが・・・
>実際はもう少し複雑で「1234511」で「12345A1-1」となるユーザー定義
>「00000"A"0"-"0」を使っていて
>「12345B1」で「12345AB-1」にしたいのですが
とありますので、一例です。
セルの表示形式で操作するのではなく、文字列データとしてみてはどうでしょうか?
A列でマクロが実行されるようにしていますので、A列のセルの表示形式は「標準」にしておいてください。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストして、A列に7文字のデータを入力してみてください。
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
Application.EnableEvents = False
str = Target
If Len(str) = 7 Then
Target = Left(str, 5) & "A" & Mid(str, 6, 1) & "-" & Right(str, 1)
Else
MsgBox "入力値が不正です。"
Target.Select
Selection = ""
End If
Application.EnableEvents = True
End Sub 'この行まで
こんな感じではどうでしょうか?m(_ _)m
この回答への補足
ありがとうございます。
まだ実際に試してはいないのですが、
A列ではなくD列で使用するにはColumns(1)の数値を変えればいいのでしょうか?
素人で申し訳ないです。
No.3
- 回答日時:
一言目に回答した通り、まずユーザー定義じゃ出来ません。
信じる信じないはご自由に。>以外の方法
具体的にどうしたら出来るのかは、既に回答済みです。他に方法はありません。
#参考
Bのセルに「0000"B-"0」とユーザー定義を設定し12341と記入させ、
Aのセルに「0000"A-"0」と異なるユーザー定義を設定し12342を記入させる、
そんなウマシカ的方法でも「出来ます」
>無理なのでしょうか
スキルさえあれば、出来ます。
操作例:
A列に00000-0のユーザー定義の書式設定を取り付けておく
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける
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 = "00000-0"
if application.istext(h) then
application.enableevents = false
h = application.replace(h, len(h), 0, "-")
application.enableevents = true
end if
end if
next
end sub
ファイルメニューから終了してエクセルに戻る
A列に123451や1234A1とデータを記入する。
手でやりますとお話ししたことを、代わりに機械がやってくれます。
この回答への補足
わぁ、ありがとうございます!
実際はもう少し複雑で「1234511」で「12345A1-1」となるユーザー定義
「00000"A"0"-"0」を使っていて
「12345B1」で「12345AB-1」にしたいのですが、
先のコードでどこを修正したらよろしいでしょうか?
スキルがないので、何度もすみません。
No.2
- 回答日時:
こんにちわ。
状況がよく分かっていないので的外れな回答になっているかもしれません。
入力された内容を文字列として認識するには
「@」
を使用します。
現在、手元に確認できる環境がないため憶測での回答になってしまい申し訳ないのですが
「ユーザー定義」->「種類」に
「@@@"-1"」
のような形式で可能ではないでしょうか。
意味合い的には文字列の末尾に「-1」を付加している状態です。ダブルクォーテーションで囲まれた文字は、文字列として認識できるようになります。
ご回答ありがとうございます。
「@@@"-1"」では「1234B11234B11234B1-1」となります。
「1234B1」で「1234B-1」にしたり「1234A2」で「1234A-2」したりもしたいのでだめです。
どうやらできないっぽいです。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの関数(式)を教えてください。 1 2022/09/27 09:28
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Excel(エクセル) エクセルで日付を2022/01/01と入っているところを、ユーザー定義で「1月」と表示させています。 4 2022/09/15 15:23
- オープンソース AWSドメイン名でApacheテスト・ページを表示させる方法を教えて下さい。 1 2023/04/26 15:59
- Excel(エクセル) シリアル数値を表示された時間で貼り付けたい。 4 2023/05/02 18:47
- Excel(エクセル) 差し込み印刷がうまくいかない 2 2022/07/29 12:26
- Excel(エクセル) エクセルを活用した受注表作成の中で関数・数式を教えてください。 3 2022/07/23 08:14
- Excel(エクセル) Excel 時間の引き算でマイナスを表示させることは出来ますか 3 2023/06/14 21:54
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
背景色の有無を判断をして別の...
-
任意のセルに小計、合計と入力...
-
Excelで全シートから検索し列で...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
Excelで隣のセルと同じ内容に列...
-
2つのエクセルのデータを同じよ...
-
エクセルで時刻(8:00~20:00)...
-
エクセルで文字が混じった数字...
-
基準となる列を参照して、別の...
-
エクセルでオートフィルタのボ...
-
エクセルで最初のスペースまで...
-
Excel関数:「0」を除いた標準...
-
Excel関数で、範囲内の最後のセ...
-
「B列が日曜の場合」C列に/...
-
Excelの行、列の左方向シフト、...
-
えエクセルで○は1とし△は0.5で...
-
エクセルで、2種類のデータを...
-
Excelで半角の文字を含むセルを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景色の有無を判断をして別の...
-
Excelで全シートから検索し列で...
-
任意のセルに小計、合計と入力...
-
VBA 動作の後、動作した行のA...
-
結合のループ処理のマクロ
-
エクセルでセル内の特定数値を...
-
エクセルで「セルを結合して中...
-
エクセルのユーザー定義で
-
EXCELで2つの数値のうち大きい...
-
Excelで隣のセルと同じ内容に列...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで時刻(8:00~20:00)...
-
エクセルでオートフィルタのボ...
-
エクセルで、2種類のデータを...
-
2つのエクセルのデータを同じよ...
-
エクセルで最初のスペースまで...
-
エクセルのオートフィルタで最...
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルVBA、別ブックへ転記す...
おすすめ情報