我在Windows窗体中使用了_KeyDown
函数:
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
如果我使用 ctrl 同时选择test
和test 4
然后按 C 进行复制,则按 ctrl + v 并逐步完成它,所以介于test2
和test3
之间。
我如何解决这个问题?
答案 0 :(得分:0)
我会告诉你为什么你不能这样做。我在Excel中录制了一个宏,输入了四行数据。我选择了单元格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 ion 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中执行此操作,例如Copy & Paste VSTO - Excel Power Tools,但这是另一个问题。