[[20210125102843]] 『テキストボックスの入力内容で表示形式を設定』(ナッツ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『テキストボックスの入力内容で表示形式を設定』(ナッツ)

ユーザーフォーム上のテキストボックスの値に応じてボタンを押したときに表示形式を設定したいと思い以下のコードを書いてみました。

 Private Sub CommandButton1_Click()
 Dim 単位1 As String
 Dim 単位2 As String
 単位1 = TextBox1.Value
 単位2 = TextBox2.Value
 Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).NumberFormatLocal = _
 "0""" & 単位1 & "(" & 単位2 & "/" & 単位1 & ")"""""
 End Sub

これを実行すると、「RangeクラスのNumberFormatLocalプロパティを設定できません。」
と表示されてしまいます。
念のため以下のコードでも試してみましたが、問題なく適応できました。

 Private Sub CommandButton2_Click()
 Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).NumberFormatLocal = _
"0""kg(袋/kg)"""
 End Sub

浅学ゆえ基本的なミスであれば申し訳ないのですがご教授願いたく存じます。

最終的にはテキストボックスの数を増やして以下のように運用したいと思っています。

 Private Sub CommandButton3_Click()
 Dim n As Long
 For n = 1 To 3
 Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).NumberFormatLocal = _
 "0""" & Controls("TextBox" & n).Value & "(" & Controls("TextBox" & n + 1).Value & "/" & Controls("TextBox" & n).Value & ")"""""
 Next n
 End Sub

よろしくお願いいたします。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 エラーの原因は、NumberFormatLocalプロパティに設定する文字列が不適切だからです。
 "の数がよろしくありません
(´・ω・`) 2021/01/25(月) 11:31

(´・ω・`)様回答ありがとうございます。
もう一回数えなおしてみたところ後ろの"が多かったです...
思っていたように動作させることができました。
ありがとうございました。
(ナッツ) 2021/01/25(月) 12:00

※解決されたようなので蛇足になりますが、どなたかの参考になれば。


作成する文字列にダブルクォートを含めようとすると、
1 引用符として
2 エスケープ文字として
3 文字列として
の3種類が同じ見た目で混在することになりますので、たいへん検証しづらくなります。

検証しやすくするためには、上記3を変数に格納するのが良いのではないかと思います。
上記2が不要になり、上記1との区別がつくようになるためです。

Dim ダブルクォート as String
ダブルクォート = VBA.Chr(34)

Dim 書式設定 as String
書式設定 = "0" & ダブルクォート & 単位1 & "(" & 単位2 & "/" & ")" & ダブルクォート

Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).NumberFormatLocal = 書式設定
(じゃふ) 2021/01/25(月) 12:11


これ……すごく便利ですね!全然思いつかなかったです……
早速public変数に入れてきました!
じゃふさん御指南ありがとうございます!
(ナッツ) 2021/01/25(月) 15:56

 参考HPです。

http://officetanaka.net/excel/vba/tips/tips90.htm
(OK) 2021/01/27(水) 17:31


 直前の↑の私のレスは他のスレッドへの
 回答を間違って記入したものです。
 失礼しました。
(OK) 2021/01/27(水) 17:35

私はよく ↓ のような書き方をしてました。 参考までに

 Sub test()
    Dim 表示形式 As String
    Dim 単位1 As String
    Dim 単位2 As String
    単位1 = "千円" 'TextBox1.Value
    単位2 = "トン" 'TextBox2.Value

    With ActiveCell
        .Resize(3).Value = 123

        表示形式 = "0""kg(袋/kg)"""
            .Offset(0).NumberFormatLocal = 表示形式

        表示形式 = "0■kg(袋/kg)■"
        表示形式 = Replace(表示形式, "■", Chr(&H22))
            .Offset(1).NumberFormatLocal = 表示形式

        表示形式 = "0■kg(袋/kg)■"
        表示形式 = Replace(表示形式, "■", Chr(&H22))
        表示形式 = Replace(表示形式, "kg", 単位1)
        表示形式 = Replace(表示形式, "袋", 単位2)
            .Offset(2).NumberFormatLocal = 表示形式

    End With
 End Sub
(チオチモリン) 2021/01/27(水) 18:38

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.