2009-03-07 15 views
4

J'ai deux cellules permet de dire: A1 et A2Fusionner le contenu de 2 cellules dans une autre 3ème cellule en utilisant VBA dans Excel

Le contenu de chacun d'eux est une chaîne:

A1: Hallo

A2: Monde

Mon but est de fusionner le contenu de A1 et A2 dans un autre, par exemple des cellules A3 à savoir le contenu de A3 doit être:

Hallo Monde

Je voudrais le faire en utilisant une macro VBA et non seulement pour les chaînes que le contenu ..

Merci les deux de u pour vos réponses !!

Répondre

6

Bien que, comme le dit MasterMix, cela est plus facile à réaliser par une formule, si vous avez une raison pour laquelle VBA doit être utilisé alors cela dépend de la façon dont vous souhaitez spécifier les cellules.

Vous pouvez le faire en fonction:

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

Tout cela ne fait reproduire le (beaucoup plus rapide) fonction intégrée Excel concaténer bien.

Vous pouvez aussi le faire dans l'une d'une centaine de façons dans une procédure, voici une façon qui invite l'utilisateur pour les gammes:

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

Vous pouvez également utiliser des plages prédéfinies et boucle à travers eux si vous avoir plusieurs gammes à combiner. Si vous expliquez un peu plus sur le scénario, quelqu'un pourrait fournir un code plus spécifique.

+0

hi, qu'est-ce que "built-in Excel concatenate fonction"? Vous voulez dire '&'? thx –

3

Je suggère soit une formule Excel

=A1&A2 

ou une macro VBA

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

'&' C'est la bonne réponse. pourquoi écrivons-nous du code? – ahnbizcad

0

Celui-ci est plus rapide, il suffit de sélectionner les cellules et ils sont fusionnés dans la première cellule.

'------------------------------------------------------------------------ 
' 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

n'est-il pas préférable d'utiliser '&' au lieu de '+'? –

Questions connexes