私はこのコードを(XFD1の別のシート上で)探していて、その列の値から配列を作成しています。次に、現在のシート上の行を横切ってそれらの値を1つずつ検索しています。一致するものが見つかると、列を切り取り、配列内の値の順序に対応する位置に挿入します。配列内の値の順序に基づいて配列を配列し、ボタンが消える
コンパイルエラーが発生しません。ワークシートにボタン(ActiveXではなく)を配置し、コードを実行するために使用しました。ここに私が見るものがあります:
- 何も起きていません。列はまったく動かされません。
- コンピュータが明らかに「思考している」のは、whirly-gigが旋回しているからです。
- ここでは神秘的な部分です - ボタンが消える!それは決して戻ってこない。私はワークシートにいくつかのボタンを置き、それらをすべて試しました。ボタンは毎回消えます。
これは本当に必要です。私が望むのは、他のシートのリストと同じ順番(リストの95項目)に列を並べ替えることだけです。私はこのコードがそれをするだろうと思ったが、私はトワイライトゾーンに入ったようで、物事は(少なくとも私の視点から)見えない。ここで
それは次のとおりです。
Sub Reorder_Columns()
Dim arrColumnOrder(1 To 95) As String
Dim index As Integer
Dim Found As range
Dim tick As Integer
For index = 1 To 95
arrColumnOrder(index) = UserFormDropDownDataSheet.range("XFD1")
Next index
Application.ScreenUpdating = False
tick = 1
For index = LBound(arrColumnOrder) To UBound(arrColumnOrder)
Set Found = Rows("1:1").Find(arrColumnOrder(index), LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If Not Found Is Nothing Then
If Found.column <> tick Then
Found.EntireColumn.Cut
Columns(tick).Insert Shift:=xlToRight
Application.CutCopyMode = False
End If
tick = tick + 1
End If
Next index
Application.ScreenUpdating = True
End Sub
配列に同じ値の95インスタンスを配置するときに、どのように並べ替えると思いますか? – Jeeped
そして、列の挿入によってボタンが「移動」している可能性があります。 –
「親セルで挿入されたオブジェクトを切り取り、コピーして貼り付け」オプションがチェックされていないため、ボタンが消えます。 *オプション>>詳細>>カット、コピー、ペースト* –