Вы почти на месте:
.PasteSpecial Transpose:=True
перенести свои данные. range1
не является хорошим именем переменной. Использование значимых имен значительно облегчает чтение и поддержку вашего кода. Итак, вы получите…
Option Explicit
Public Sub main()
On Error Resume Next 'don't error on cancel button
Dim rngSource As Range
Set rngSource = Application.InputBox("Select src Range", "select src range", Type:=8) 'type 8 = range
Dim rngDest As Range
Set rngDest = Application.InputBox("select des range", "select des range", Type:=8)
On Error GoTo 0 're-activate error reporting
If Not rngSource Is Nothing And Not rngDest Is Nothing Then
rngSource.Copy
rngDest.PasteSpecial Transpose:=True
End If
End Sub
Если вы хотите вставить только значения без форматирования, используйте…
rngDest.PasteSpecial Paste:=xlPasteValues, Transpose:=True
См. Range.PasteSpecial метод и Перечисление xlPasteType для получения дополнительной информации.
Первая вещь, которую я скажу Вам, состоит в том, что Вы не МОЖЕТЕ сделать этого без пользователя, разрешающего поддержку вспомогательных устройств в панели управления доступности. Это - некоторая безопасность, встроенная в OSX.
Вот отрывок кода, который я использую в одном из моих приложений, чтобы сделать это:
//this method calls a carbon method to attach a global event handler
- (void)attachEventHandlers
{
//create our event type spec for the keyup
EventTypeSpec eventType;
eventType.eventClass = kEventClassKeyboard;
eventType.eventKind = kEventRawKeyUp;
//create a callback for our event to fire in
EventHandlerUPP handlerFunction = NewEventHandlerUPP(globalKeyPress);
//install the event handler
OSStatus err = InstallEventHandler(GetEventMonitorTarget(), handlerFunction, 1, &eventType, self, NULL);
//error checking
if( err )
{
//TODO: need an alert sheet here
NSLog(@"Error registering keyboard handler...%d", err);
}
//create our event type spec for the mouse events
EventTypeSpec eventTypeM;
eventTypeM.eventClass = kEventClassMouse;
eventTypeM.eventKind = kEventMouseUp;
//create a callback for our event to fire in
EventHandlerUPP handlerFunctionM = NewEventHandlerUPP(globalMousePress);
//install the event handler
OSStatus errM = InstallEventHandler(GetEventMonitorTarget(), handlerFunctionM, 1, &eventTypeM, self, NULL);
//error checking
if( errM )
{
//TODO: need an alert sheet here
NSLog(@"Error registering mouse handler...%d", err);
}
}
Вот пример метода обратного вызова, который я использую:
OSStatus globalKeyPress(EventHandlerCallRef nextHandler, EventRef theEvent, void *userData)
{
NSEvent *anEvent = [NSEvent eventWithEventRef:theEvent];
NSEventType type = [anEvent type];
WarStrokerApplication *application = (WarStrokerApplication*)userData;
//is it a key up event?
if( type == NSKeyUp)
{
//which key is it?
switch( [anEvent keyCode] )
{
case NUMERIC_KEYPAD_PLUS:
//this is the character we are using for our toggle
//call the handler function
[application toggleKeyPressed];
break;
//Comment this line back in to figure out the keykode for a particular character
default:
NSLog(@"Keypressed: %d, **%@**", [anEvent keyCode], [anEvent characters]);
break;
}
}
return CallNextEventHandler(nextHandler, theEvent);
}
Для последней части, отправляя события, используют методы CGEvent, предоставленные в ApplicationServices/ApplicationServices.h
Вот функция в качестве примера для перемещения мыши в указанное абсолютное местоположение:
#include <ApplicationServices/ApplicationServices.h>
int to(int x, int y)
{
CGPoint newloc;
CGEventRef eventRef;
newloc.x = x;
newloc.y = y;
eventRef = CGEventCreateMouseEvent(NULL, kCGEventMouseMoved, newloc,
kCGMouseButtonCenter);
//Apparently, a bug in xcode requires this next line
CGEventSetType(eventRef, kCGEventMouseMoved);
CGEventPost(kCGSessionEventTap, eventRef);
CFRelease(eventRef);
return 0;
}
Для ответвления событий от нажатия мыши см. http://osxbook.com/book/bonus/chapter2/altermouse/
Я не проверил это под 10,5 Leopard, но на 10,4 они работают.