27. februar 2020 - 13:25Der er
13 kommentarer og 1 løsning
VBA - sammensæt mappesti pba. celleværdier
Jeg prøver at lave en makro uden held.
I praksis med cellereferencer er det ca. sådan her: Første del af mappesti hedder: Q:\Budgetopfølgning - Så skal den se på celle B9, tage de første 3 bogstaver og indsæt i mappesti bagved bindestregen, dernæst skal den kigge på D2, tage tallet derfra og indsæt som næste led i mappesti. Og så afslutte med igen at tage de første 3 venstre bogstaver i B9 og sætte dem sammen med _Center.xlsm, som så udgøre det sidste led
Når den har den fulde mappesti skal den åbne filen, kopiere fra række C400:X400 og sætte det ind i det første ark som værdier.
Derefter skal den starte forfra og tage celle B10 (ny målcelle) og gøre nøjagtig det samme. Men stadig holde fast i D2
Når den så når en celle som er tom, skal den stoppe.
Når du prøver, går du så trinvist frem? Eller går du direkte i mål?
Hvis du har vanskeligheder med koden, så vil jeg anbefale eksempelvis i dette tilfælde at bygge makroen til først at bygge filstien og skrive den i et tomt felt og herefter lave åbning af filen og så videre. Så har du mulighed for at se hvor det begynder at fejle.
Denne virker hvor B9 er statisk, men den skal rulle videre til B10 osv, indtil B** er tom. Hvordan gør jeg denne dynamisk og skal Anystring ikke redefineres igen og igen?
Sub Hent_Data()
Dim strF As String, strP As String, strH As String Dim wb As Workbook Dim ws As Worksheet Dim AnyString, Mystr
Gør evt det at bruge msgbox funktionaliteten i ‘immidiate window’ til at se hvad din kode danner af resultat. Evt også lade den skrive resultatet af din kode til et felt for at se resultatet.
Kan jeg ud fra Anystring, få excel til at vælge en celle? Så hvis jeg har defineret Anystring = Kolonne B & Række 9 Hvordan får jeg den så til at vælge celle (Kolonne B+1 & Række 9)??
Foreløbig Kode:
Sub Hent_Data()
Dim strF As String, strP As String Dim Kolonne As String Dim Række As Long Dim wb As Workbook Dim ws As Worksheet Dim AnyString, Mystr
Jeg får koden til at lægge 1 til Række inden LOOP. Kan jeg få den til at tælle antallet af loops som er kørt, og lægge det til "Række" i stedet 1? Eller gøre "Række" dynamisk Sådan så den ved hvert loop lægger: 1 1+1 1+1+1
Linje: AnyString = ActiveSheet.Range(Kolonne & Række + 1).Value
Hvis jeg tolker dit forsøg rigtigt vil jeg foreslå Dim anystring as range
Men måske du heller skal kalde denne variabel noget andet. For eksempel CurrentCell
Hvis du tager udgangspunkt i en celle og ligger adressen ind i en variabel, så kan du nemt kalder dens værdi med .value og når du i slutningen af dit loop af færdig med den celle og vil til den næste kan du bruge .offset(1 ,0)
Så kort fortalt skal du have nedenstående flettet ind, jeg håber du forstår.
Fik det faktisk løst med Total og Count i Loopet. Send et svar, så giver jeg point. Og mange tak for input!
Endelig kode:
Sub Hent_Data()
Dim strF As String, strP As String Dim Kolonne As String Dim Række As Long Dim wb As Workbook Dim ws As Worksheet Dim Anystring, Mystr Dim Total As Integer, Count As Integer
'Definere udgangspunkt - B9, hvor det øverste center står' Kolonne = "B" Række = 9 Anystring = ActiveSheet.Range(Kolonne & Række).Value
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.