« 『Excel』の『データの入力制限』の設定って面倒なので『vba』でやってみる! | トップページ | 『xy = ?』を何となく計算してみた… »

2018年6月12日 (火)

『Excel』の『データの入力制限』の設定を『vba』でやった時のトラップ!!!

『Excel』の『データの入力制限』の設定を『vba』で以下のように作った。

Sub test()
    DataEntryRestriction "A1", "1,2,3,4,5"
End Sub

'---------------------------------------
' セルに『データの入力規制』を登録
' 登録する場所
' 登録するリスト
' 使い方:DataEntryRestriction "A1", "1,2,3,4,5"
Public Function DataEntryRestriction(r As String, list As String)
    With Range(r).Validation
        .Delete
        .Add Type:=xlValidateList, _
             Operator:=xlEqual, _
             Formula1:=list
    End With
End Function

そして、色々やっていたら…

エラーが出た…。

こんな感じ

001

>'〇'には、読み取れない内容が含まれています。このブックの内容を回復しますか?
>ブックの発行元が信頼できる場合には、[はい]をクリックしてください。

???

何でエラーが表示されるのか?

なんかおかしな事をやったかな?

『はい』を選択すると…

002_2

>読み取れなかった内容を修復または削除することにより
>ファイルを開くことが出来ました。

>削除された機能/xl/worksheets/sheet1.xmlパーツ内のデータの入力規制

と表示された…。

で、結果『データの入力規制』がすべてリセットされていた…。

Σ( ̄ロ ̄lll)ガーン

な、何が悪かったの???

調べたら『list』の文字列が長が過ぎった…。

こんな感じ…。

Sub test()
    DataEntryRestriction "A1", "項目001,項目002,項目003,項目004,項目005,項目006,項目007,項目008,項目009,項目010,項目011,項目012,項目013,項目014,項目015,項目016,項目017,項目018,項目019,項目020,項目021,項目022,項目023,項目024,項目025,項目026,項目027,項目028,項目029,項目030,項目031,項目032,項目033,項目034,項目035,項目036,項目037,項目038,項目039,項目040,項目041,項目042,項目043"
End Sub

こっから調べてみたが…

何か半角文字だと245文字でカンストで全角文字だと255文字でカンストらしい。

何で半角と全角で差ができるかは、分からん…。

しかし、『データの入力規制』を根こそぎ削除って、全くなんだよ!

問題のあるセルだけで良いじゃん!!!

問題が発生した時の処理は、あるリストから指定されたものを抽出して
リスト化したものを放り込むと言った処理。

でも一旦セルに書き出してそのセルの範囲を指定する形なら問題が発生しない…。

0004

こうすれば、エラーが発生しない…。

Sub test()
    DataEntryRestriction "A1", "=$C$1:$C$43"
End Sub

'---------------------------------------
' セルに『データの入力規制』を登録
' 登録する場所
' 登録するリスト
' 使い方:DataEntryRestriction "A1", "1,2,3,4,5"
Public Function DataEntryRestriction(r As String, list As String)
    With Range(r).Validation
        .Delete
        .Add Type:=xlValidateList, _
             Operator:=xlEqual, _
             Formula1:=list
    End With
End Function

でも、参った…。

早めに原因が分かったら良かったけど…。

文字数トラップは、結構一杯あったりする。

気を付けよう…。

|

« 『Excel』の『データの入力制限』の設定って面倒なので『vba』でやってみる! | トップページ | 『xy = ?』を何となく計算してみた… »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/108365/66890194

この記事へのトラックバック一覧です: 『Excel』の『データの入力制限』の設定を『vba』でやった時のトラップ!!!:

« 『Excel』の『データの入力制限』の設定って面倒なので『vba』でやってみる! | トップページ | 『xy = ?』を何となく計算してみた… »