- ベストアンサー
Excel VBAのコードで転記時に¥マークが二つ表示される問題の解決方法
- Excel VBAのコードで転記時に¥マークが二つ表示される問題が発生しています。具体的には、2回目以降の入力で最終行の1行次の行を選択する部分で、テキストボックスの内容に「¥」を追加する処理が含まれるため、転記時に¥マークが二つ表示されてしまいます。
- 解決方法としては、上記のコードの特定の部分を修正する必要があります。具体的には、テキストボックスの内容に「¥」を追加する処理を削除することで、テキストのみの内容で転記することができます。
- 間違っている部分は、2回目以降の入力で最終行の1行次の行を選択する部分で、「¥」を追加する処理が重複していることです。これが原因で転記時に¥マークが二つ表示されてしまいます。処理の重複を避けるために、追加する処理を削除する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
For myArray = 0 To 1 With Selection TextBox1 = TextBox1.Value TextBox2 = "¥" & TextBox2.Value .Offset(, myArray) = varRag(myArray) End With Next myArray ここでループしていますから TextBox2 が 2000 の場合、最初のループで TextBox2 は "¥2000" になり、次のループで "¥¥2000" になります。 そもそも、TextBox1 = TextBox1.Value の処理も何を意味しているのか不明です。TextBox1にTextBox1のValue値を代入しても意味が無いような、、、 また、「¥」を付けて文字列化してしまっては、その後の計算に差し支えるような気がします。 少し書き換えましたのでご参考に。 Private Sub CommandButton4_Click() Dim r As Range With ActiveSheet If TextBox1 = Empty Then 'テキストボックス1に名前を入力しないで登録を押した時に出すエラーメッセージです。 MsgBox "Text1は科目を入力して下さい。", vbCritical, "エラー" Exit Sub End If If Not IsNumeric(TextBox2) Then 'テキストボックス2に数値を入力しないで登録を押した時に出すエラーメッセージです。 MsgBox "Text2は数値を入力して下さい。", vbCritical, "エラー" Exit Sub End If '初めて入力される場合は、最初の行を選択します。 If .Range("A16") = Empty Then .Range("A16").Value = TextBox1.Value .Range("A16").Offset(0, 1).Value = TextBox2.Value .Range("A16").Offset(0, 1).NumberFormatLocal = "\#,##0;[赤]\-#,##0" Else '2回目以降の入力であれば最終行の1行次の行を選択します。 Set r = .Range("A65536").End(xlUp).Offset(1) r.Value = TextBox1.Value r.Offset(0, 1).Value = TextBox2.Value r.Offset(0, 1).NumberFormatLocal = "\#,##0;[赤]\-#,##0" End If 'テキストボックスをすべて初期化します。 TextBox1 = "" TextBox2 = "" TextBox1.SetFocus End With End Sub
お礼
とても参考になりました。有難うございました。