2017-06-19 9 views
1

おはよう、を連結細胞最初

私は範囲J2内のすべてのセルの値を使用して、新しいセル(I23)で文を作りたい:彼らは空でない場合はS2 。

これは私のボードです:

enter image description here

それはのような文をマークする必要があります。 "今朝に私は多分、、、nooooo、aaaaaah、yeeeesをOUIを持っている225、Y、Y"

しかし、ある値の数を変更することができ、PB(2番目の行でそれを参照してください)

これが今の私のコードです:

y = Sum("J2:S2") 
    For Z = 1 To Z = y 
    If Range("J2:S2") <> " " Then 
    Cells(Z, 2) = Range("J2:S2") 
    End If 
    Next 

答えて

1

おはようここに。

Option Explicit 

Public Sub J2S2() 

    Dim rngCell   As Range 
    Dim strResult  As String 

    For Each rngCell In Range("J2:S2") 
     If Len(rngCell) Then 
      strResult = strResult & " " & rngCell 
     End If 
    Next rngCell 

    Debug.Print Trim(strResult & ".") 

End Sub 

それはすぐに窓の範囲J2:S2内のすべてのセルの値を出力します:おそらく動作何か。スペースで区切ります。私は最終的に完全な停止を追加しました、あなたが出力が文でなければならないと述べた限り。 Converting to sentence case using VBA

編集:あなたが最初の列をループする場合は あるいは、これを試してみてください。

Option Explicit 

Public Sub ColumnsFirstJ2S4() 

    Dim rngCell   As Range 
    Dim strResult  As String 

    Dim lngRow   As Long 
    Dim lngCol   As Long 

    Dim rngTarget  As Range 

    Set rngTarget = ActiveSheet.Range("J2:S4") 

    With rngTarget 

    For lngCol = .Column To .Columns.Count + .Column 
     For lngRow = .Row To .Rows.Count + .Row 

       If Len(ActiveSheet.Cells(lngRow, lngCol)) Then 
        strResult = strResult & " " & ActiveSheet.Cells(lngRow, lngCol) 
       End If 

     Next lngRow 
    Next lngCol 

    End With 

    Debug.Print "ADDING TEXT here " & Trim(strResult & ".") 
    ActiveSheet.Range("I23") = "ADDING TEXT here " & Trim(strResult & ".") 

End Sub 
+1

感謝を

あなたはそれsenteceケースを作りたい場合は、ここでは良い例ですあなたはあなたの答えVityataのためにあなた!あなたのコードは素晴らしいですし、彼は私を多く助けます!しかし、私はまだいくつかの問題を抱えている、あなたのコード行ごとに行を書くことは、列ごとに列を書くことは可能ですか?値をDebug.Print Trim(strResult& "。")とすると、Range( "I23")を実行できません。そして、もし私の前にテキストを追加したいのですか? – babou

+1

@babou - 編集を参照してください:) – Vityata

+0

それはセル内でうまく書いていますが、行単位でも書いています。( – babou