質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

407閲覧

カンマ区切りをもとに複数結果を取得してシートに貼り付けたい

ypk

総合スコア83

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/06/27 10:40

VBAを学習をしています。
以下のことを実現したいと考えております。

実現したいこと

カンマ区切りで複数結果を取得してシートに貼り付ける

具体的には「検索ID」に「1,2,3,4」と入力し「検索実行!」ボタンを押下すれば、シート2に以下のように出力されるイメージです。

カンマ区切りでひとつずつIDを渡してあげる感じです。

イメージ説明

イメージ説明

できているところ

検索実行ボタンを押下したときにシート2にテキストボックスに入力されている文字を転記するところまではできています。

しかし、カンマで検索IDを区切るところまでは実装することができておりません。

Private Sub 検索実行_Click() Worksheets(2).Cells(1, 1) = Worksheets(1).TextBox5.Text Worksheets(2).Cells(1, 2) = Worksheets(1).TextBox6.Text Worksheets(2).Cells(1, 3) = Worksheets(1).TextBox7.Text End Sub

どなたか知恵を貸していただけると嬉しいです。

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記でどうでしょう。

vba

1Private Sub 検索実行_Click() 2 Dim ary As Variant 3 ary = Split(Worksheets(1).TextBox5.Text, ",") 4 5 Dim cnt As Long 6 cnt = UBound(ary) + 1 7 If cnt = 0 Then Exit Sub 8 9 Debug.Print cnt 10 With Worksheets(2) 11 .Cells(1, 1).Resize(cnt).Value = WorksheetFunction.Transpose(ary) 12 .Cells(1, 2).Resize(cnt).Value = Worksheets(1).TextBox6.Text 13 .Cells(1, 3).Resize(cnt).Value = Worksheets(1).TextBox7.Text 14 End With 15End Sub

投稿2021/06/27 11:15

編集2021/06/27 11:32
hatena19

総合スコア33790

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ypk

2021/06/27 11:36

ありがとうございます!無事に実現できました!助かりました、、、、! ちなみに WorksheetFunction.Transpose(ary) についてあまり詳しく理解できませんでした。 もう少し、詳しく教えていただいてもよろしいですか?こちらは何の処理をしているものなのでしょうか?
hatena19

2021/06/27 11:39

「VBA WorksheetFunction.Transpose」でWEB検索すれば、解説ページが腐るほど見つかりますので、まずはそれを読んでみてください。
ypk

2021/06/27 11:44

1次元配列のデータを縦方向に入力することができるものだということを確認しました。 しかしなぜ、WorksheetFunction.TransposeをりようすることでWorksheets(1).TextBox5に入力されたカンマ区切りの文字列をひとつずつ出力することができるのでしょうか、、、、? もともと一つの文字列だったものを、どうやって,で分割し3つのセルに設定できているのでしょうか。 お手数をおかけしますがどうぞよろしくお願いいたします。
hatena19

2021/06/27 11:53 編集

ary = Split(Worksheets(1).TextBox5.Text, ",") 上記のコードでテキストをカンマ区切りで分割して配列に変換しています。 Split関数についてやはりWEB検索してみてください。
ypk

2021/06/27 11:55

ご丁寧にありがとうございます。 また機会があればよろしくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問