• 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.

Terugkeren naar ander/vorig excel-document

Status
Niet open voor verdere reacties.

BernieBear

Gebruiker
Lid geworden
15 dec 2011
Berichten
14
In een willekeur aan Excel-documenten, moet de gebruiker een rolnaam kunnen selecteren en kopi�ren naar de cel waar hij op dat moment staat. Data/valideren/lijst is geen optie, omdat de bestanden steeds wisselen.

Dmv een macro wil ik de gebruiker een naam laten kiezen uit een cellen-bereik in een mede geopend bestand namelijk "test rollen.xlsm". De macro hiervoor bevindt zich in datzelfde bestand en wordt gestart met een toets-combi.

Tot aan het selecteren en het kopi�ren van de rolnaam gaat het goed, alleen weet ik niet hoe ik vanaf dat moment het 'oude' celadres van het andere workbook weer kan selecteren om daarin uiteindelijk de gekozen rolnaam te plakken. Het meest simpel zou zijn om Alt-tab te simuleren, maar dat werkt m.i. niet in VBA.

Het betreft de volgende code:

Sub Rolselecteren()

Dim NaamRol As String
Dim NogEenKeer As Integer
Dim Leeg As Integer


On Error Resume Next


' Start opvragen rolnaam


NaamRol = InputBox("Vul (een deel van) de naam van de rol in.")

Windows("test rollen.xlsm").Activate
Sheets("Rolnamen").Select
Range("A1").Select

Do
Cells.Find(What:=NaamRol, After:=ActiveCell, LookIn:=xlValues _
, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False).Activate
NogEenKeer = MsgBox("Is dit de juiste rol?" & vbCr & vbCr & "Komt de rol in het bestand" & vbCr & "niet voor? Klik dan op annuleren.", vbQuestion + vbYesNoCancel)

Loop While NogEenKeer = vbNo

If NogEenKeer = vbYes Then
ActiveCell.Select

Selection.Copy
<<<en hier moet ik terug naar het oorspronkelijke bestand + celadres waar de toetscombi heeft geleid tot het starten van de macro. >>>>
+ nog PasteSpecial commando, maar dat lukt wel......

Else:
Leeg = MsgBox("De rol komt in het bestand niet voor." & vbCr & vbCr & "Voer de rol eerst op.", vbInformation + vbOKOnly)
Sheets("invoer-verkopen").Select
Range("C3").Select

End If

End Sub

Alvast dank voor jullie medewerking! En mocht de oplossing bestaan uit code die bij een ander niveau binnen VBA (dan het werkblad zelf) moet worden opgeslagen; kun je dan aangeven waar precies (want dat begrijp ik nog niet zo goed).
 
Indien je het tweede bestand opent vanuit het eerste bestand is dat eenvoudiger. Je kunt het andere bestand namelijk volledig besturen vanuit het eerste bestand.

Indien beide bestanden al open zijn kan het ook wel. Je moet alleen af van het "select" denken (muisknoppen nadoen) en "alt-tab", copy om data over te brengen, etc.

kun je nog eens kort door je aanpak lopen?
 
Beste Wampier. Ik begrijp je reactie; ik ben idd een junior op VBA-gebied en gebruik veel de macro-recorder. Ik wil met alle liefde af van het select.denken..... maar hoe? Ik heb de .select in eerste instantie ook verwijderd. Nadeel hiervan is dat ik de te kiezen rol (inhoud cel) niet meer zie als user en ik dus geen juiste keuze kan maken. Dat werkte dus helaas niet.

Het zgn 'eerste' bestand waar jij aan refereert, zijn willekeurige bestanden die elders gemaakt worden. Ik kan in die bestanden dus niet 'vooraf' lijsten of macro's meegeven. Daarom wil ik door het openen van een tweede bestand de macro/functionaliteit beschikbaar hebben zodat de macro toch in het eerste bestand opgeroepen kan worden. Zoals eerder gezegd werkt de macro (geactiveerd met een toetsaanslag) helemaal tot en met het kopieren van de juiste celinhoud. Het laatste stukje gaat erom om terug te komen naar de cel (in een ander workbook) waar ik stond bij aanvang van het starten van de macro.

Ik heb al gegoogled met set c of iets dergelijks, ook met Cells(c,r) (+ declaratie van de variabelen Kolom en Rij)), maar dan blijf ik binnen hetzelfde workbook en dat wil ik niet. Wil je toch een poging wagen om mij te ondersteunen? Dank alvast!
 
Dat is dus het nadeel van het runnen vanuit een andere file. Het kan in principe wel, zolang je weet welke file de procedure aanroept. Als er bijvoorbeeld maar twee files open zijn kun je de andere file aanpassen. Als je weet hoe de andere file heet kun je die specifieke file aanpassen. Als er veel files open staan is dat een probleem.

Een macro aanroepen in een andere file draait lokaal in dat workbook zonder link terug naar de aanroepende file.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan