Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
メッセージボックスに変動する複数の各セルの内容を表示させたい
投稿日時: 17/12/07 11:10:11
投稿者: Dellcasio

いつもお世話になっております。
 
セルB2からB6に数字が入っているのを
メッセージボックスに各セルの数字を
スペースか、カンマで区切って表示
させたく、
方法として考えたのが、動的配列に各セルの
内容を格納したりしたりする方法でしたが、
うまく出来ませんでした。
 
 
尚、セルの数は、変動するので、B6になるとは限りません
 
 
どなたかご指導を頂けないでしょうか?
よろしくお願い致します。
 
 
 
Dim i
 
Dim AAA() As String
 
  For i = 2 To 6
     AAA() = Range("B" & i).Value
  Next i
 
MsgBox AAA()
 
 
End Sub

回答
投稿日時: 17/12/07 11:54:04
投稿者: hatch315
メールを送信

こんな感じ
 
Dim i As Long
 
Function AAA() As String
         i = 2
         Do While Range("B" & i).Value <> "" And i <= 1048576
            AAA = AAA & Range("B" & i).Value & ","
            i = i + 1
         Loop
          
         MsgBox AAA
End Function

回答
投稿日時: 17/12/07 12:41:20
投稿者: もこな2

いろんなやり方あるとおもいますけど、私ならこうやるかなぁ
 

Sub サンプル()

Dim i As Integer 'プロシジャレベルのInteger型
Dim AAA As String 'プロシジャレベルのString型
 
With ActiveSheet
        'B列の2行目から最終行までループ
    For i = 2 To .Cells(.Rows.Count, "B").End(xlUp).Row
        'セルの値がブランクでなければAAAにセルの値と半角スペースを追加
        If .Cells(i, "B").Value <> "" Then AAA = AAA & .Cells(i, "B").Value & " "
    Next i
End With
    
'「AAA」の最後に余分な半角スペースが1文字入っちゃうのでそいつを削除
AAA = Left(AAA, Len(AAA) - 1)
    

'メッセージボックスで表示
MsgBox (AAA)

End Sub

回答
投稿日時: 17/12/07 12:45:41
投稿者: もこな2

別の質問者さんのトピックですが、ヒントになりそうな回答をつけたので、そちらも参考に
http://www.moug.net/faq/viewtopic.php?t=76514

投稿日時: 17/12/07 13:14:02
投稿者: Dellcasio

hatch315 さんの引用:
こんな感じ
 
Dim i As Long
 
Function AAA() As String
         i = 2
         Do While Range("B" & i).Value <> "" And i <= 1048576
            AAA = AAA & Range("B" & i).Value & ","
            i = i + 1
         Loop
          
         MsgBox AAA
End Function

 
 
hatch315さん
ご回答ありがとうございました。
頂いたコードでテストしてみたのですが、
コンパイルエラーになり、
End sub が必要です。
とメッセージがでます。
 
VBA初心者なので原因がわかりません。
アドバイスを頂けないでしょうか?
宜しくお願い致します。
 
 
 
 
 
Sub test()
 
 
 
Dim i As Long
 
 
Function AAA() As String
 
i = 2
Do While Range("B" & i).Value <> "" And i <= 1048576
AAA = AAA & Range("B" & i).Value & ","
i = i + 1
Loop
 
MsgBox AAA
 
End Function
 
 
 
End Function
 
End Sub
 
 
 

投稿日時: 17/12/07 13:17:34
投稿者: Dellcasio

もこな2 さんの引用:
別の質問者さんのトピックですが、ヒントになりそうな回答をつけたので、そちらも参考に
http://www.moug.net/faq/viewtopic.php?t=76514

 
もこな2さん
ご回答ありがとうございます。
 
頂きましたアドバイスをこれから勉強して参ります。
ありがとうございます。

回答
投稿日時: 17/12/07 13:33:46
投稿者: WinArrow
投稿者のウェブサイトに移動

引用:
頂いたコードでテストしてみたのですが、
コンパイルエラーになり、
 End sub が必要です。
とメッセージがでます。

 
SUB 〜 End Sub の中に
Functionプロシジャがあるのは、文法違反です。
 
Function プロシジャは、外に出しましょう。
 
Sub Tset()
 
  Debug.Print AAA
 
End Sub
 
Function AAA()
 
End Function
 
今回の場合、Functionプロシジャにすべきかどうかは、別のことです。
 

投稿日時: 17/12/07 15:06:06
投稿者: Dellcasio

WinArrowさん、hatch315さん、もこな2さん、
ご回答ありがとうございます。
 
みなさんのおかげで、問題が解決致しました。
有難う御座いました。