質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

650閲覧

VBAのChangeイベントを用いてセルの全角数字を半角数字にする処理を実装したい

Poi_Poi

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/05/09 02:00

編集2022/05/09 02:19

VBAのChangeイベントを用いてセルに全角数字を入力した際にすべて半角数字にする処理を実装したいのです。
しかし、下記のコードではセルに全角数字を含む値を入力してエンターを押しても空白セルになってしまいます。
どうするれば解決できるでしょうか。よろしくお願いします。

VBA

1Private Sub Worksheet_Change(ByVal Target As Range) 2 3'セルの値が変更されたときに全角数字をすべて半角数字に変更する。 4 5Dim i As Long 6Dim ansData As Variant 7 8ansData = "" 9For i = 1 To Len(Target.Value) 10 11 If Mid(Target.Value, i, 1) Like "[0-9]" Then 12 ansData = ansData & StrConv(Mid(Target.Value, i, 1), vbNarrow) 13 Else 14 ansData = ansData & Mid(Target.Value, i, 1) 15 End If 16 17 18Next i 19 20Debug.Print ansData 21Debug.Print Target.Address 22 23If ansData <> Target.Value Then 24 Application.EnableEvents = False 25 Target.Value = andData 26 Application.EnableEvents = True 27End If 28 29 30End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Target.Value = andData

Target.Value = ansData
の間違いですね。

先頭に
Option Explicit
をつけるとこのような間違いを見つけやすくなります。
Option Explicitをつけてから、コーディングするようにしましょう。
(VBE)のオプションで「変数の宣言を強制する」にチェックをいれると、
開始時に自動的に、Option Explicitが付加されます。

投稿2022/05/09 02:45

tatsu99

総合スコア5436

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Poi_Poi

2022/05/09 03:14

ミスを防ぐ方法まで提示していただきありがとうございます。
guest

0

ベストアンサー

タイポですね。

vba

1If ansData <> Target.Value Then 2 Application.EnableEvents = False 3 Target.Value = ansData 'andData を ansData に修正 4 Application.EnableEvents = True 5End If

モジュールの先頭に Option Explicit を記述しておいて変数宣言の強制をしておくと簡単にミスが見つかります。

Office TANAKA - 今さら聞けないVBA[Option Explicitって何?]

投稿2022/05/09 02:44

hatena19

総合スコア33692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Poi_Poi

2022/05/09 03:14

ミスを防ぐ方法まで提示していただきありがとうございます。
guest

0

最後がansDataでなくandDataになっちゃってますね

投稿2022/05/09 02:44

bebebe_

総合スコア504

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Poi_Poi

2022/05/09 03:14

早速のご回答ありがとうございます。 お恥ずかしい限りです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問