2009-03-07 15 views

Antwort

6

Obwohl, wie MasterMix sagt, wird dies am einfachsten durch eine Formel erreicht, wenn Sie einen Grund haben, warum VBA muss verwendet werden, dann hängt es davon ab, wie Sie die Zellen angeben möchten.

Sie könnten dies als eine Funktion tun:

Private Function addTwoCells(rngA As Range, rngB As Range) As String 
    addTwoCells = rngA & rngB 
End Function

dies ist die (viel schneller), obwohl alle repliziert integrierten Excel-Funktion verketten.

Sie können es auch tun, in einer von etwa hundert Möglichkeiten, in einem Verfahren, hier ist eine Möglichkeit, dass der Benutzer für die Bereiche fordert:

Private Sub addTwoCellsProc() 
    Dim rngA As String 
    Dim rngB As String 
    Dim rngOutput As String 
    Dim rngTest As Range 

    Do 
     rngA = InputBox("Please enter first cell address", "Cell A") 
     rngA = Range(rngA).Cells(1, 1).Address 
     Set rngTest = Intersect(Range(rngA).Cells(1, 1), ActiveSheet.Cells) 
    Loop Until Not rngTest Is Nothing 

    Do 
     rngB = InputBox("Please enter second cell address", "Cell B") 
     rngB = Range(rngB).Cells(1, 1).Address 
     Set rngTest = Intersect(Range(rngB), ActiveSheet.Cells) 
    Loop Until Not rngTest Is Nothing 

    Do 
     rngOutput = InputBox("Please enter destination cell address", "Output cell") 
     Set rngTest = Intersect(Range(rngOutput), ActiveSheet.Cells) 
    Loop Until Not rngTest Is Nothing 

    Range(rngOutput) = Range(rngA) & Range(rngB) 
End Sub

Sie auch, wenn Sie vordefinierte Bereiche und Schleife durch sie nutzen könnten haben mehrere Bereiche zu kombinieren. Wenn Sie etwas mehr über das Szenario erklären, könnte jemand einen spezifischeren Code bereitstellen.

+0

Hi, was ist "eingebaute Excel-Verkettungsfunktion"? Du meinst '&'? thx –

3

Ich schlage vor, entweder eine Excel-Formel

=A1&A2 

oder ein VBA-Makro

Range("A3").Cell.Value = Range("A1").Cell.Value & Range("A2").Cell.Value 
+1

'&' Dies ist die richtige Antwort. Warum schreiben wir Code? – ahnbizcad

0

Dieser ist schneller, wählen Sie einfach die Zellen und sie werden in der ersten Zelle zusammengeführt.

'------------------------------------------------------------------------ 
' Procedure : Concatenate Text 
' Author : Tim Bennett 
' Date  : 11/6/2015 
' Purpose : Concatenate selected text into first column 
'------------------------------------------------------------------------ 
' 
'Sub Concatenate_Formula(bConcat As Boolean, bOptions As Boolean) 
Sub Concatenate() 

Dim rSelected As Range 
Dim c As Range 
Dim sArgs As String 
Dim bCol As Boolean 
Dim bRow As Boolean 

    'Set variables 
    Set rOutput = ActiveCell 
    bCol = False 
    bRow = False 

    On Error Resume Next 

    'Use current selection 
    Set rSelected = Selection 

    On Error GoTo 0 

    'Only run if cells were selected and cancel button was not pressed 
    If Not rSelected Is Nothing Then 
     sArgs = "" 'Create string of cell values 
     firstcell = "" 

     For Each c In rSelected.Cells 
      If firstcell = "" Then firstcell = c.Address(bRow, bCol) 
      sArgs = sArgs + c.Text + " " 'build string from cell text values 

      c.Value = "" ' Clear out the cells taken from 
     Next 

     'Put the result in the first cell 
     Range(firstcell).Value = sArgs 



    End If 
End Sub 
+0

ist es nicht besser, '&' anstelle von '+' zu verwenden? –

Verwandte Themen