• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Welke named range staat mijn cursor?

Status
Niet open voor verdere reacties.

mulderwme

Gebruiker
Lid geworden
12 dec 2014
Berichten
232
Hallo,

Ik wil een maandkalender uit Excel kopiëren.
De range heb ik een naam gegeven: m_01, m_02 enz. Elke range bestaat uit meerdere cellen.
1. Nu wil ik weten wat naam is van de range waarin mijn cursor staat.
2. Ik wil dan namelijk die range kopiëren. Ik wil de gebruiker niet zelf die range laten selecteren.

Een voorbeeldje vind je in de bijlage.

Wie kan mij helpen?

Bedankt alvast voor het meedenken.

groet
Willem
 

Bijlagen

In de msgbox staat in welke named range je een cel hebt geselecteerd.

Code:
Sub hsv()
Dim nm As Name, c As Range
 For Each nm In Application.Names
  Set c = Intersect(ActiveCell, Range(nm))
   If Not c Is Nothing Then MsgBox nm.Name
 Next nm
End Sub
 
Bedankt, Harry, precies wat ik nodig had.
Met een kleine aanpassing kopieer ik de range.

groet,
Willem

Code:
Sub hsv()
Dim nm As Name, c As Range
 For Each nm In Application.Names
  Set c = Intersect(ActiveCell, Range(nm))
   If Not c Is Nothing Then Range(nm.Name).Copy
      'MsgBox nm.Name
 Next nm
End Sub
 
Graag gedaan, maar je kan er natuurlijk ook gelijk een bestemming aan geven.

Hier wordt het gekopieerd naar cel M1.
Code:
Sub hsv()
Dim nm As Name, c As Range
 For Each nm In Application.Names
  Set c = Intersect(ActiveCell, Range(nm))
   If Not c Is Nothing Then Range([COLOR=#0000ff]nm[/COLOR]).Copy [COLOR=#0000ff]cells(1,13)[/COLOR]
      'MsgBox nm.Name
 Next nm
End Sub
 
met een goed doordachte struktuur van het werkblad kan het ook met:

Code:
Sub M_snb()
    MsgBox ActiveCell.CurrentRegion.Name.Name
End Sub
 
Gebruikers moeten in de juiste maand gaan staan en dan wordt e.e.a. gekopieerd.
Nu wilde ik een msgbox toevoegen op het moment dat ze niet in een maand staan.


Code:
Sub hsv()
Dim nm As Name, c As Range
 For Each nm In Application.Names
  Set c = Intersect(ActiveCell, Range(nm))
   If Not c Is Nothing Then Range(nm.Name).Copy

   else
      MsgBox "Selecteer een maand om te kopiëren."
      exit sub
  endif

      Next nm
End Sub

Maar door die for each loop komt hij altijd uit bij de msgbox. Hoe kan ik dat voorkomen?

groet
Willem
 
Test het zo maar eens Willem.
Code:
Sub hsv()
Dim nm As Name, c As Range, y As Long
 For Each nm In Application.Names
  Set c = Intersect(ActiveCell, Range(nm))
   If Not c Is Nothing Then
     Range(nm).Copy Cells(1, 13)
   Else
     y = y + 1
   End If
 Next nm
 If y = Application.Names.Count Then MsgBox "De activecell staat niet in een 'named range'."
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan