私は4つのExcelテーブルを重ねてタブを作成しています。各行は、次のように、テーブルの左側の列に、独自の「アップ」および「ダウン」ボタンがあります Excelフォームボタンは同じ場所に残りますが、TopLeftCellは異なります(親行が非表示になった後もすべて)
私は同じセル内に収まるようにボタンを収縮(20 rowHeightの) 。これにより、セルのTopLeftCell.Row
プロパティを次のように使用することができました。クリックすると、ボタンの行の内容が上/下の行にコピーペーストされます。
currRow = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
If InStr(Application.Caller, "Up") > 0 Then
Move_Project_Up currRow
Else
Move_Project_Down currRow
End If
ユーザーがこのタブに到達すると、任意の空のテーブルの行が(Rows(rr).EntireRow.Hidden = True
で)隠されている:これは基本的なコードです。ボタンMove and size with cells
は自動的に非表示になります)。表示されるすべてのボタンは、期待通りに機能します。しかし、ユーザは、あるテーブルの上から上のテーブルの上に(すなわち、現在隠れている行に)プロジェクトを移動させたいことがある。コードが正常に移動を行い、行を隠蔽を解除する
:あなたは下の画像では244行に「UP」行312からデータを移動したい想像することができます。ここで問題です:行が再表示されたときに、ボタンは暗灰色であり、そのTopLeftCell.Row
は間違っている:彼らは無効になっていない
。クリックすると、割り当てられたマクロが引き続きトリガーされます。しかし、私はDebug.Print
からTopLeftCell.Row
が必ずしも実際の行であるとは限りません。上記の画像では、ボタンの両端にはTopLeftCell.Row
の97があります。最初のセットは正しいですが、2番目のセットは正しくありません。
なぜこのようなことが起こっているのでしょうか?私はそれが行の表示を非表示にすること、および/またはこのタブで多くのことが起こっているという事実(10,000個以上の配列式など)と関係があると思います。
ありがとうございます!
コントロールは最高ですが、特にActiveXのようなものですが、フォームもそうで、このようなことがたくさん起こっています。私が一度行ったのは、ボタン名を含む非表示の列があり、行が隠されたり表示されたりするたびに、ボタンを元の位置に戻して非表示の行に隠すルーチンが表示されます。コントロールは移動やサイズ変更をしないように設定されていたため、これもまた大きな混乱の原因となりました。 – jkpieterse
コントロールを移動しないように設定しなかったのは、行を隠すことができないためです。しかし...ボタンを動かした場所に戻してください!!!私はStackOverflowに精通していません。これを回答として投稿したいですか?または、私自身の質問に答えてあなたのコメントを参照してください。 –
あなたの元の質問に回答し、それを解決するために取った手順とそれに答えてマークしてください。そのようにすれば、人々が類似の問題を見てくるのを助けることができます:) –