【VB.NET】ClosedXML:入力規則

MEMO
  • この記事は GitHub - ClosedXML - Wiki を参考に書かせていただいたものですが、C# から VB.NET への書き換えをし、英語から日本語へ翻訳しただけでなく、元記事の構成・コード・コメント等を変更している場合もありますのでご了承ください。
  • 現在 ClosedXML のメンテナンスをご担当されている Francois Botha 様からの掲載許可もいただいてます。
  • この記事のコードサンプルについては、Imports ClosedXML.Excel が宣言されていることを前提としています。
  • ClosedXML の作成者について:Francois Botha, Aleksei Pankratev, Manuel de Leon, Amir Ghezelbash
  • ClosedXML のライセンスについて:GitHub - ClosedXML - MIT License

入力規則:1~5 の小数点数のみ許容

ws.Cell(1, 1).DataValidation.Decimal.Between(1, 5)

入力規則:整数 2 のみ許容、エラーメッセージ付き

Dim dv = ws.Range("A2:A3").SetDataValidation
dv.WholeNumber.EqualTo(2)

dv.ErrorStyle = XLErrorStyle.Warning
dv.ErrorTitle = "範囲外の数値"
dv.ErrorMessage = "このセルに入力できるのは 2 だけです。"
注意

元記事では var dv1 = ws.Range("A2:A3").DataValidation; と書かれているのですが、実際に試してみると .Range に .DataValidation プロパティは存在せずエラーになりました(2019/07/07)。

いろいろ試してみたら(上記コードの通り).SetDataValidation メソッドを使うことで期待通りの結果を得られたのですが、これが正しいやり方なのか保証はできません。

by エレン・イースト(当サイトの管理人)

入力規則:西暦2000年以降の日付のみ許容、入力時メッセージ付き

Dim dv = ws.Cell("A4").DataValidation
dv.Date.EqualOrGreaterThan(New DateTime(2000, 1, 1))

dv.InputTitle = "1999年は盛り上がりましたが"
dv.InputMessage = "今世紀の日付を入力してください。"

入力規則:リストから選択(範囲からリストを取得)

ws.Cell("C1").Value = "Yes"
ws.Cell("C2").Value = "No"
ws.Cell("A5").DataValidation.List(ws.Range("C1:C2"))

入力規則:リストから選択(コードからリストを取得)

'この形式で指定します:"オプション1,オプション2,オプション3"
Dim options = New List(Of String)({"オプション1","オプション2","オプション3"})
Dim validOptions = $"""{String.Join(",", options)}"""
ws.Cell(1,1).DataValidation.List(validOptions, True)
MEMO

念のためメモしておきますが、上記コード中の $ は補完文字列 (string interpolation) の機能を提供しています。

Console.WriteLine($"Today is {Now.DayOfWeek}.")
' --> Today is Sunday.

Console.WriteLine($"It's {Now:HH:mm} now.")
' --> It's 08:44 now.

 

「【VB.NET】ClosedXML の使い方」の一覧を表示

購読する
通知を受け取る対象
guest
0 Comments
Inline Feedbacks
View all comments