Excel VBAで値を連結するためのコードを、行内の7列までの間に^を使用して記述しました。私が最初の6列に同じ値を入力すると、^を除いた出力が得られることに気付きました。連結コードが意図したとおりに動作しない
Private Sub CommandButton21_Click()
Cells(2, 1).Select
Dim stri As String, eaid_1 As String, eaid_2 As String, eaid_3 As String, _
eaid_4 As String, eaid_5 As String, eaid_6 As String, eaid_7 As String
Do Until Selection.Value = ""
eaid_1 = Selection.Value
eaid_2 = Selection.Offset(0, 1).Value
eaid_3 = Selection.Offset(0, 2).Value
eaid_4 = Selection.Offset(0, 3).Value
eaid_5 = Selection.Offset(0, 4).Value
eaid_6 = Selection.Offset(0, 5).Value
eaid_7 = Selection.Offset(0, 6).Value
stri = eaid_1 & "^" & eaid_2 & "^" & eaid_3 & "^" & eaid_4 & "^" & eaid_5 _
& "^" & eaid_6 & "^" & eaid_7
Selection.Offset(0, 8).Value = stri
Selection.Offset(1, 0).Select
Loop
Cells(2, 9).Select
Dim x As String, y As String, z As String
Do Until Selection.Value = ""
x = Selection.Value
y = Right(x, 6)
z = Replace(y, "^", "")
x = Replace(x, y, z)
Selection.Offset(0, 0).Value = x
Selection.Offset(1, 0).Select
Loop
End Sub
これは、2番目のループのコードで得られる効果です。そのループを削除すると、これは起こりません。だから問題は次のようになります:その第2のループでのあなたの意図は? FYI:最後の6文字から '^'を削除します。これは、2つの '^'の間の値が異なる長さを持つことがあるので、予期しない結果をもたらす可能性があります。したがって、時には1つの '^'が削除されることもあれば、2つの場合もあります... – trincot
また 'Cells(2、1).Select'を避け、' eaid_2 = Selection.Offset(0、1) .Value'の代わりに、 'eaid_2 = Cells(2,1).Offset(0、1).Value'を使用してください。よりダイナミックにすることができます。 'Dim Rng as Range'、' Set Rng = Range( "B1") '、' eaid_2 = Rng.Offset(0、1).Value'の順に選択すると、 –
でも可能です。コード全体をArrayに入れ、 'Dim eaid()をVariant'にしてコードコードをもっと綺麗に見せて、デバッグしやすくしてください –