[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テキストボックスの入力内容で表示形式を設定』(ナッツ)
ユーザーフォーム上のテキストボックスの値に応じてボタンを押したときに表示形式を設定したいと思い以下のコードを書いてみました。
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
作成する文字列にダブルクォートを含めようとすると、
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
参考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.