2017-03-10 2 views

Antwort

0
function findLastRowInCol(wks as excel.worksheet, col as long) 
    dim rng as range 
    with wks 
     set rng = .cells(.rows.count, col).end(xlup) 
     findLastRowInCol = rng.row 
    end with 
end function 

aus dem Direkt-Bereich testen:

debug.print findLastRowInCol(thisworkbook.sheets("sheet1"), 5) 

Diese Ihnen in der angegebenen Spalte die Zeile der letzten nicht leeren Zelle geben. Beachten Sie, dass dies möglicherweise nicht die zuletzt verwendete Zeile des Arbeitsblatts ist. Wenn Sie eine andere Spalte auswählen, erhalten Sie abhängig von der letzten nicht leeren Zelle der Spalte ein anderes Ergebnis.

Edit: ersetzt Active mit „sheet1“

Edit: Beispielcode in einem anderen Makro zu verwenden, in von einer anderen Quelle einzufügen,

thisworkbook.sheets("sheet1").cells(findLastRowInCol(thisworkbook.sheets("sheet1"), 5), 5).pastespecial paste:=xlAll 

Wenn Einfügen aus einer anderen Excel-Tabelle oder die Formatierung abzuzustreifen , können Sie z „XlPasteSpecialValues“

Edited hinzufügen: eine Zeile aus einem anderen Arbeitsblatt einfügen und transponieren, verwenden Sie die oben so weit wie „.pastespecial“ dann ein paar Variationen auf:

.pastespecial paste:=xlpastevalues, transpose:=True 

Die einfachste Implementierung ist,

sub PasteToE() 
thisworkbook.sheets("sheet1").cells(findLastRowInCol(thisworkbook.sheets("sheet1"), 5),5).pastespecial paste:=xlpastevalues, transpose:=True 
end sub 

Fügen Sie dem anderen Arbeitsblatt eine Befehlsschaltfläche hinzu, und weisen Sie ihm dieses Makro zu. Wählen Sie Ihren Bereich und kopieren Sie ihn, und klicken Sie dann auf die Schaltfläche.

+0

werde ich einen Versuch geben, aber in Ihrem Code ich nicht überall über Paste aus der Zwischenablage sehen und –

+0

Hinzugefügt einfache Einfügen von Code auf dem Boden umzusetzen. Sie haben nicht angegeben, was Sie einfügen oder wo. Dies beeinflusst, wie Sie Werte transponieren. – Winterknell

+0

Ich weiß nicht, wie Sie Ihren Code in VBA bearbeiten. Ich kopiere Werte aus der Spalte in einem anderen Blatt derselben Arbeitsmappe –

0

versuchen, etwas wie folgt aus:

Sub WriteFromClipboard() 
Dim refRow As Integer 
Dim Data As DataObject 
Dim DataText As String 
On Error Resume Next 
    'Get row to write data: 
    refRow = 1 + ThisWorkbook.Sheets("Sheet1").Columns(5).Find("*", SearchOrder:=xlByRows, LookIn:=xlValues, SearchDirection:=xlPrevious).Row 
    If Err.Number > 0 Then 
     refRow = 1 
    End If 
    Err.Clear 
    'Get data from clipboard: 
    Set Data = New DataObject 
    Data.GetFromClipboard 
    DataText = Data.GetText 
    'Write data from clipboard on the spreadsheet: 
    If Err.Number > 0 Then 
     MsgBox "Clipboard doesn't contain valid data." 
    Else 
     ThisWorkbook.Sheets("Sheet1").Cells(refRow, 5).Select 
     ThisWorkbook.Sheets("Sheet1").Paste 
    End If 
End Sub 
+0

Ich erhalte einen Fehler Kompilierfehler: Benutzerdefinierter Typ nicht in der dritten Zeile definiert –

+0

Entschuldigung, Sie müssen auf "Microsoft Forms 2.0 Object Library" verweisen. Um das zu tun, gehen Sie zu Extras Menü und klicken Sie dann auf Verweise ... Aktivieren Sie im Dialogfeld die Option "Microsoft Forms 2.0 Object Library" und klicken Sie dann auf OK. Wenn diese Referenz aus irgendeinem Grund nicht in der Liste erscheint, klicken Sie auf Durchsuchen und wählen Sie die Datei FM20.DLL im Unterordner System32 Ihres Windows-Ordners. Klicken Sie auf OK und Sie können loslegen :) – Pspl

+0

das ist es ... Vielen Dank für Ihre Unterstützung.Ich habe einige Änderungen vorgenommen, weil ich möchte, dass es in Transpose eingefügt wird, aber die Formatierung so belassen, wie es war. und benenne Blatt1 in den gewünschten Namen des Blattes um. jetzt ist es einfach perfekt –

Verwandte Themen