|
▼みーちゃんキャット さん:
おはようございます。
>ComboBoxをフォームボタンを使い、Excelシート上に貼り付けてあります。
>リスト表示させるDataは別のシートから書式設定で入力範囲を指定しています。
>評価したいのは文字列なのですが、どのようにしたら良いのでしょうか?
コードを記述するようにしてください。
ComboBoxというのは「コントロールツールボックス」にあるコンボボックス
(ActiveXコントロールですよね?)
新規ブックにて、標準モジュールに
Sub test1()
On Error Resume Next
ActiveSheet.OLEObjects.Delete
With ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=216, Top:=54, Width:=216, Height:=27.75)
With Range("a1:a20")
.NumberFormatLocal = "[$-411]ggge""年""m""月""d""日"""
.Cells(1).Value = Date
With .Range("a2:a20")
.Formula = "=a1+1"
.Value = .Value
End With
End With
MsgBox "A列の日付をコンボボックスに反映させます"
.ListFillRange = "=" & Range("a1:a20").Address
End With
On Error GoTo 0
End Sub
問題にしているのは、上記のtest1を実行した場合のコンボボックスのデータですよね?
選択リストは 平成xxxで表示されますが、選択したデータは、シリアル値で
表示されてしまいます。
方法1
データを文字列でコンボボックスに登録すれば・・・、
新規ブックにて、標準モジュールに
Sub test2()
On Error Resume Next
ActiveSheet.OLEObjects.Delete
With ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=216, Top:=54, Width:=216, Height:=27.75)
With Range("a1:a20")
.NumberFormatLocal = "[$-411]ggge""年""m""月""d""日"""
.Cells(1).Value = Date
With .Range("a2:a20")
.Formula = "=a1+1"
.Value = .Value
End With
End With
MsgBox "A列の日付をコンボボックスに反映させます"
With .Object
.List = Evaluate("transpose(text(a1:a20,""ggge""""年""""m""""月""""d""""日""""""))")
End With
End With
On Error GoTo 0
End Sub
上記のtest2を実行し、コンボボックスを操作してみてください。
今度は、選択した日付も 平成xxxx で表示されます。
方法2
Excelコントロールのコンボボックスを使うと問題なく、表示されます。
簡単な修正方法は↑これを使うという方法。
試してみてください。
|
|