2017-06-03 1 views
0

私は4つのExcelテーブルを重ねてタブを作成しています。各行は、次のように、テーブルの左側の列に、独自の「アップ」および「ダウン」ボタンがあります Excelフォームボタンは同じ場所に残りますが、TopLeftCellは異なります(親行が非表示になった後もすべて)

enter image description here

私は同じセル内に収まるようにボタンを収縮(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は自動的に非表示になります)。表示されるすべてのボタンは、期待通りに機能します。しかし、ユーザは、あるテーブルの上から上のテーブルの上に(すなわち、現在隠れている行に)プロジェクトを移動させたいことがある。コードが正常に移動を行い、行を隠蔽を解除する

enter image description here

:あなたは下の画像では244行に「UP」行312からデータを移動したい想像することができます。ここで問題です:行が再表示されたときに、ボタンは暗灰色であり、そのTopLeftCell.Rowは間違っている:彼らは無効になっていない

enter image description here

。クリックすると、割り当てられたマクロが引き続きトリガーされます。しかし、私はDebug.PrintからTopLeftCell.Rowが必ずしも実際の行であるとは限りません。上記の画像では、ボタンの両端にはTopLeftCell.Rowの97があります。最初のセットは正しいですが、2番目のセットは正しくありません。

なぜこのようなことが起こっているのでしょうか?私はそれが行の表示を非表示にすること、および/またはこのタブで多くのことが起こっているという事実(10,000個以上の配列式など)と関係があると思います。

ありがとうございます!

+1

コントロールは最高ですが、特にActiveXのようなものですが、フォームもそうで、このようなことがたくさん起こっています。私が一度行ったのは、ボタン名を含む非表示の列があり、行が隠されたり表示されたりするたびに、ボタンを元の位置に戻して非表示の行に隠すルーチンが表示されます。コントロールは移動やサイズ変更をしないように設定されていたため、これもまた大きな混乱の原因となりました。 – jkpieterse

+0

コントロールを移動しないように設定しなかったのは、行を隠すことができないためです。しかし...ボタンを動かした場所に戻してください!!!私はStackOverflowに精通していません。これを回答として投稿したいですか?または、私自身の質問に答えてあなたのコメントを参照してください。 –

+0

あなたの元の質問に回答し、それを解決するために取った手順とそれに答えてマークしてください。そのようにすれば、人々が類似の問題を見てくるのを助けることができます:) –

答えて

0

1人のコメント投稿者(jkpieterse)が示唆しているように、「破損」ボタンの.Topプロパティを同じ行のセルの値.Topに設定すると機能しました!

+0

優秀、それは助けてうれしい! – jkpieterse

関連する問題