2017-03-09 1 views
1

私はこれが私のコードC#の相互運用形式検証の一覧

var listFormats = new List<string>(); 
listFormats.Add("US punctuation + alphanumeric lowercase:[a-z0-9,.?;:!&()_'" + '"' + "]+"); 
listFormats.Add("US punctuation + alphanumeric uppercase:[A-Z0-9,.?;:!&()_'" + '"' + "]+"); 
listFormats.Add("US punctuation + alphanumeric mixedcase:[A-Za-z0-9,.?;:!&()_'" + '"' + "]+"); 
var flatListFormats = string.Join(",", listFormats.ToArray()); 

rng.Validation.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertInformation, XlFormatConditionOperator.xlBetween, flatListDelimiters, Type.Missing); 
です...

を指定した範囲のセルにデータの検証を追加するコードを実装しますが、,が含まれている値が粉々にチャンクされています
enter image description here

代わりの

そして、これは私が検証リストに得るものです

US punctuation + alphanumeric lowercase:[a-z0-9,.?;:!&()_'"]+ 
US punctuation + alphanumeric uppercase:[A-Z0-9,.?;:!&()_'" 
US punctuation + alphanumeric mixedcase:[A-Za-z0-9,.?;:!&()_'" 
+0

'XlDVType.xlValidateList'は、基本的にはセルをドロップダウンボックスにします。あなたができる最善の方法は 'xlValidateCustom'と巧妙な式を使うことです.Excelは式の正規表現をサポートしていないのですが、vbaはそうしています。 – Xiaoy312

+0

ここで2つのまともな答えがあります:http://stackoverflow.com/questions/30724178/create-data-validation-list-when-some-of-the-values-have-commas – reasra

+0

私はどのようにvbaコードをC#の回答から... – Valip

答えて

1

範囲にリストを取得し、データ検証の範囲を参照してください。

// Get the list you want into a cell range 
worksheet.Range("A1:A3").Value = listFormats; 

// Reference the range when applying the validation 
rng.Validation.Delete(); 
rng.Validation.Add(... xlBetween, "='" + worksheet.Name + "'!" + worksheet.Range("A1:A3").Address); 
+0

これは、実装後に検証リストに表示されます: '$ K $ 2:$ K $ 11' – Valip

+0

@Valip良い点。あなたは "=" +を追加する必要があります...私は私の答えを更新しました。 – reasra

+0

これは、検証リストを含めるべきワークシート以外のワークシートの範囲を参照している場合にも有効ですか? – Valip