2017-10-16 7 views
-2

ワークシートの列のヘッダーに基づいて辞書が設定されています。ヘッダーの一部に改行があります。これらの値のディクショナリを照会できるコードを変更する方法はありますか?キーに改行があるクエリ辞書?

私は、値の間に "vbnewline" を挿入しようとしました、そして、

Sheets(UnPref).Range("A" & y).Value = Sheets("New Item Entry").Cells(z, hedDict("REQUESTOR")).Value 
Sheets(UnPref).Range("B" & y).Value = Sheets("New Item Entry").Cells(z, hedDict("ORG")).Value 
Sheets(UnPref).Range("C" & y).Value = Sheets("New Item Entry").Cells(z, hedDict("SHIP TO LOCATION")).Value 
Sheets(UnPref).Range("D" & y).Value = Sheets("New Item Entry").Cells(z, hedDict("MRI NUMBER")).Value 
Sheets(UnPref).Range("E" & y).Value = Sheets("New Item Entry").Cells(z, hedDict("ITEM IDENTIFIER" & vbNewLine & "USE UPPER CASE" & vbNewLine & "MANDATORY")).Value 
+0

質問を編集してテストデータとコードを表示してください –

+0

サンプルコードを追加しました。 基本的には、例えば、ヘッダは次のようになります。 すべての私はかなり...ヘッダーがのvbCrLf(vbNewLineを含んで、あなたの確認がされていない – Ryan

+0

を参照しようとしている一つのセル内の「アイテム識別子 」を使用UPPER CASE 「MANDATORY )または単にvbLfまたはvbCr?辞書をデバッグして実際のキーをチェックしようとしましたか? –

答えて

0

vbNewLineChr(13) & Chr(10)で失敗しました。すなわちvbCr & vbLfであり、セル内の改行文字はChr(10)のみ、すなわちvbLfである。

いずれかの列ヘッダー(これは一般的に、より効率的である。あなたは、簡単に例えば"ITEM IDENTIFIER MANDATORY"としての要素を参照することができる)から、あなたの辞書を構築するときにスペースvbLfを置き換える:

hedDict(Replace(theColumnHeader, vbLf, " ", Compare:=VbCompareMethod.vbBinaryCompare)) = theValue

または、コードサンプルのvbNewLineをvbLfに置き換えます。

+1

"セル内の改行文字はChr(10)のみです" - 手動で* Alt + Enter *で入力した場合のみ。 'vbNewLine'を使ってVBAコードで書かれた場合は、' vbNewLine'を含みます。 –

+0

'vbNewLine'は*プラットフォーム特有のものであることを明確にする価値があると思います。つまり、Windowsでは' vbCrLf'と同じですが、Macではなくです。 –