• ベストアンサー

Excel VBA テキストボックス内の数値をソートさせるのには?

fumufumu_2006の回答

回答No.2

ANo.1さんと同様に、ソートは他人(excel)に任せる方法です。 作業シートを使って、[データ][並べ替え]と同様の事をしてます。 Private Sub CommandButton1_Click() Dim ws As Worksheet Dim str As String Dim i As Integer Set ws = Sheets("Sheet2") '適当な作業シートを指定してください '作業シートクリア ws.Cells.Clear 'テキストボックスの文字を作業シートのA列へ1文字づつ書き込む For i = 1 To Len(TextBox1.Text) ws.Cells(i, 1) = Mid(TextBox1.Text, i, 1) Next 'A列を並べ替え ws.Columns("A:A").Sort Key1:=ws.Range("A1"), Header:=xlNo '作業シートのA列をまとめてActiveSheetのA1へ str = "" For i = 1 To ws.UsedRange.Rows.Count str = str & ws.Cells(i, 1) Next Range("A1") = str End Sub .NET Frameworkに任せる方法です Private Sub CommandButton1_Click() Dim d As Object Set d = CreateObject("System.Collections.ArrayList") '.NET Frameworkへの参照 'Dim d As New ArrayList '参照設定:Common Language Runtime Libraryにした場合、上記2行と同じ意味 Dim str As String Dim i As Integer 'テキストボックスの文字を1文字づつArrayListへ For i = 1 To Len(TextBox1.Text) d.Add Mid(TextBox1.Text, i, 1) Next '並べ替え d.Sort 'ArrayListのデータをまとめてActiveSheetのA1へ str = "" For i = 0 To d.Count - 1 str = str & d(i) Next Range("A1") = str '後始末 Set d = Nothing End Sub

junta3618
質問者

お礼

返信が送れてしまい申し訳ございません。お答えいただきありがとうございます。 勉強中の身ですがNET Frameworkに任せるやり方もあるのですね まだ使いこなすには時間がかかりそうですが、こちらも参考にさせていただきます。 ありがとうございます

関連するQ&A

  • テキストボックスをグループ化するVBA

    エクセル上に並んだテキストボックスを、ボタンを押すことで、任意のテキストボックスをグループ化させたい。また、別のボタンでグループ化の解除が出来るようなVBAをおしえてください。 テキストボックスは、Sheet1~3まであって、ボタンもそれぞれに配置してあり、 どこのSheetのボタンを押しても、各シート、それぞれに任意の設定したテキストボックスがグループ化できるようにしたい ※各シート、グループ化するテキストボックスはおなじでなない・・・ よろしくお願いします。

  • VBAテキストボックスについて

    こんばんは。 エクセルVBAのテキストボックスの使用方法で行き詰っています。 配列内のデータをテキストボックスへ表示してあります。 テキストボックスを、ダブルクリックして内容を変更し、 変更したデータを配列へ格納する仕組みにしようとしています。 問題は、ダブルクリックすると、テキストボックス内のデータが消えてしまう事です。変更せず他のテキストボックスをクリックすると、データが消えたままになってしまいます。 データは表示したままで、必要な箇所のみ変更する。 ダブルクリック後何もせず、他のテキストボックスをクリックしても 、データは残る仕組みにしたいのですが、可能でしょうか? ご教授お願いいたします。 ※仕事の関係でお礼が遅くなりましたら申し訳ございません。

  • エクセルVBA チェックBoxとテキストBox

    VBA勉強中の者です。エクセル2010使用 前回も同じような件で質問したのですが、入力フォームを作成中。 数量表の入力ホームなので、出来るだけキーボードのテンキーでの操作が出来るようにと考えております。 チェックボックスのon/off でテキストボックスの入力の可否を出来るようにしています。これが7組あるとします。(チェックボックス1に対してテキストボックス1に数値が入力出来るように) 質問(1) チェックが入っていれば、呼応したテキストボックスへエンターキーで移動。 チェックを入っていなければ、エンターキーで次のチェックボックスへ移動するようにしたいのです。 質問(2) シートへの転記の際は、7組の間に『、』カンマを入れたいのですが、当然チェックのないものは必要ないので、カンマが要らない事になります。初心者の考えでは単純に条件式をその通り数書くことになるのかと思うとゾッとしますが、少しでも条件式を減らす方法があれば、ご教授願います。 分かり難くて、すみません。

  • エクセルVBA テキストボックスへのセットフォーカスについて

    エクセルVBAでユーザーフォーム内に配置されたテキストボックス への数値の入力時に、指定範囲内になければメッセージボックスで 規格外であることを警告し、その規格外が入力されたテキストボックス を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが どうすればよいのでしょうか? 自分で考えた構文です。 Private Sub TextBox1_AfterUpdate() Dim A As Single A = TextBox1.Text If A < 1.99 Or A > 3.00 Then MsgBox "規格外!!"     TextBox1.Text = "" TextBox1.SetFoucus End If Exit Sub End Sub これですと、次のテキストボックスにフォーカスが移動してしまいます。 次のテキストボックスにフォーカスを移動させずに、規格内の値が 入力されるまでフォーカスを移動させない方法を教えて下さい。 お願い致します。

  • EXCEL VBA のテキストボックスで

    EXCEL VBAのテキストボックスでボックス内にテキストを入力 しなければカーソルの移動が出来ないようにできますか? 宜しくお願いします。

  • テキストボックスの大きさを、基準の大きさに戻す(エクセルVBA)

    図形のテキストボックスの大きさを取得して、その値を各テキストボックスの基準の大きさとして記録しておき、テキストボックスの大きさをマウスでドラッグして大きさを変えた後、ボタン1つでもとの大きさに戻したいのですが、どのようにすればよいでしょうか? 1)図形のテキストボックス、大きさの取得方法は? 2)基準の大きさと記録する方法は? 3)記録された大きさに戻すには?(シート上に配置されたボタンで実行) ※ 複数のシートに複数のテキストボックスがあります。 ※ シート毎にセットします。(シート毎にテキストボックスのサイズが違う為) ※ 現在、各テキストボックスには、基準位置がセットしてあり、ボタンで基準位置へ戻る仕組みが組まれています。(これをそのままにして・・・) ※ エクセル97と2000で使えるようにします。(作成は97) 宜しくお願い致します。

  • エクセルVBAでテキストボックス等選択する。

    こんばんわ! エクセルのVBAのユーザーフォームについての質問です。 オプションボタン1・2・3とあって 1を選択したらテキストボックス1が選択される(そのまま入力できる状態になる) 2を選択したらテキストボックス2が選択される(そのまま入力できる状態になる) 3を選択したらテキストボックス3が選択される(そのまま入力できる状態になる) ということをしたいのですが、どのようにすればよいでしょうか? アドバイスの程よろしくお願いいたします。

  • VBAでの「0011」などの頭に0がつく数値の扱い

    質問です。 VBA初心者です。 現在、エクセルのVBAで会社で使用するツールを自作しようとしています。 サンプルなどで勉強しつつ、フォームのテキストボックスに入力した数値をシートに転記したのですが、0011など頭に0のつく数値だと、シート上では11となってしまいます。 これを0011と、そのままシートに転記したいのですが、どなたか良い方法をご教授願えませんでしょうか? 宜しくお願いします。

  • 数値の大きい順にソート

    数値の大きい順にソートするにはどのようにしたらよろしいでしょうか? 例えば、 @A = ("10","5","18","6","9"); という配列があるとします。 これを @B = sort @A; とすると、 10,18,5,6,9 となってしまいます。 これを 18,10,9,6,5 のように数値の大きい順に配列Bに代入したいのですが、どうしたらよいでしょうか?よろしくお願いします。

    • ベストアンサー
    • Perl
  • テキストボックス

    たびたびの質問すみません。 エクセルVBAでテキストボックス等(条件)に入力すると、他のテキストボックスにエクセルシートから照合して表示させる方法で、条件のテキストボックス等を2つ以上にすることは可能でしょうか、あればやり方を教えてください。