Nejste přihlášen/a.
Poptáváte dost nesnadnou úlohu, protože vede na cyklus For Each Cell from Selection.
Zkuste si nejdříve tady toto makro. Až vám půjde, přidáme.
Do aktivní buňky se poskládá string z hodnoty z buňky odsazené o dvě místa nalevo, přidá se lomítko a hodnota z buňky odsazené o jedno místo nalevo.
*
Sub Macro1()
ActiveCell.Value = ActiveCell.Offset(0, -2).Value & "/" & ActiveCell.Offset(0, -1).Value
End Sub
OK, díky, mám vytvořeno, Jak dále?
Mám makro, které spojí do označených buněk vždycky spojí spojí string z bunky o jednu vlevo a o dvě vlevo:
Sub test()
Dim cel As Range
Dim selectedRange As Range
Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
cel.Value = cel.Offset(0, -2).Value & ", " & cel.Offset(0, -1).Value
Next cel
End Sub
Takže makro už mám, ale potřebuju dořešit jednu věc. Makro spojí všechny hodnoty označené oblasti do stringu a string vytiskne do bu%nky A1. Jak nastavím, aby se zapsalo relativně k vybrané oblasti?
Tak už to mám
Sub test()
Dim cel As Range
Dim selectedRange As Range
Dim text As String
Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
text = text & cel.Value & " "
Next cel
selectedRange.Cells(1, 3) = text
End Sub
jj, to by šlo.
Mrkněte se na moje makra. V prvním vidíte snad ten nejjednodušší způsob zápisu, který se dá použít. Do druhého makra jsem přidal podmínku, aby se vám separátor nevkládal i v případě prázdných buněk ve výběru.
Vy máte jako separátor mezeru, kde rozdíl není tak patrný, ale zkuste přidat lomítko. Hned uvidíte co se stane.
Jasná věc, nějaká taková podmínka by v podobných makrech vždycky měla být.
*
Sub Macro1()
Dim Vysledek As String
Const Separator As String = "/ "
For Each Cell In Selection
Vysledek = Vysledek & Cell.Value & Separator
Next Cell
ActiveCell.Offset(0, 3) = Vysledek
End Sub
Sub Macro2()
Dim Vysledek As String
Const Separator As String = "/ "
For Each Cell In Selection
If Cell.Value <> "" Then Vysledek = Vysledek & Cell.Value & Separator
Next Cell
ActiveCell.Offset(0, 3) = Vysledek
End Sub
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.