2

_KeyDownWindowsフォームでこの関数を使用しました。

if ((e.KeyCode == Keys.V) && (e.Modifiers == Keys.Control))
{
    // do stuff
}

次に、コピーされたデータを取得するために使用しました。

 string[] clipboardRows = Clipboard.GetText(TextDataFormat.UnicodeText).Split(new string[] {"\r\n"},
                                                                                                 StringSplitOptions.None);

これは正常に機能しますが、スプレッドシートから選択したセルを選択すると、その間にあるすべてのセルがコピーされます。たとえば、次のようになります。

1.Test
2.Test2
3.Test3
4.Test4

test両方を選択し、をtest 4使用してctrlから、を押してコピーすると、+をC押してステップスルーすると、すべてがsoと。の間になります。ctrlvtest2test3

これを解決するにはどうすればよいですか?

4

1 に答える 1

1

なぜできないのかをお見せします。マクロをExcelで記録し、4行のデータを入力しました。セルA1とA4を選択し、Ctrl+Cを押します

Range("A1").Select
ActiveCell.FormulaR1C1 = "abc"
Range("A2").Select
ActiveCell.FormulaR1C1 = "def"
Range("A3").Select
ActiveCell.FormulaR1C1 = "hij"
Range("A4").Select
ActiveCell.FormulaR1C1 = "klm"
Range("A4,A1").Select    'It actually concatenates the cells you've selected, that info isn't in the clipboard, if I selected three cells in the column it would be Range("A4,A1,A2").Select
Range("A1").Activate
Selection.Copy  

'Range("B1").Select
'ActiveSheet.Paste   'when I paste onto new cells, only two rows are taken up

これはVSTOで行うことができます(例:VSTOのコピーと貼り付け-Excel Power Tools)が、それは別の質問です。

于 2012-07-31T04:07:57.133 に答える