02. august 2006 - 22:03Der er
17 kommentarer og 1 løsning
Læsning af celleindhold til variabel - VBA
Hej
Jeg har et lille problem med en programlinje, som jeg håber der er en der kan hjælpe mig med.
Jeg vil have læst indholdet (som er en tekststreng) af celle 1,2 og 2,2 og 3,2 o.s.v. til min variabel VNname. Jeg får bare ikke samlet nogle data op i min variabel - hvad kan jeg have gjort forkert?
Her er min programlinje:
VNname = Workbooks("AKS opsummering 2-8-6 version 1.xls").Worksheets("Navnedatabase").Application.Cells(VN, 2).Value
Jeg udleder af din beskrivelse, at værdierne skal samles i 1 variabel så jeg håber da det er nogle korte tekster du har
Sub Samle() For r = 1 To 30 ' ret til aktuel antal rækker VNname = VNname & Sheets("Navnedatabase").Cells(r, 2).Value Next MsgBox ("") & VNname End Sub
Nej der har jeg nok ikke forklaret mig godt nok. Værdierne skal ikke samles i 1 variabel.
Jeg har en mappe (Opsummering) hvor jeg vil have samlet nogle oplysninger fra nogle andre mapper (Afdeling 1, 2, 3 o.s.v.).
I min opsummeringsmappe har jeg et navneark, hvor jeg har indtastet alle de navne (navne på celler i mine afdelingsfiler) som jeg vil have at min opsummeringsfil skal hente fra afdelingsfilerne efterhånden som de åbnes/lukkes.
VNname skal derfor bruges til efterfølgende at kunne hente værdi fra celle Range(VNname).value der derefter indsættes i min opsummering.
Mit problem er, at min VNname = Workbooks("AKS opsummering 2-8-6 version 1.xls").Worksheets("Navnedatabase").Application.Cells(VN, 2).Value ikke returnere nogle værdi.
Hej tvc, jeg skal ud at se på cykkelløb nu, men hvis ikke andre har løst gåden, så kikker jeg på det senere.
Når du skriver mapper - mener du så Projektmapper ? Evt navne på de projektmapper der skal hentes værdier i? samt hvilke celler evt. lidt mere af din kode, så vi kan gennemskue din VNname linie
Jeg vil lige starte med at give mine projektmapper nogle navne så det er lettere at forklare.
Den projektmappe jeg vil have opsummeret data i kan vi kalde Opsummeringsprojektmappen og de projektmapper jeg vil hente data fra kan vi kalde Afdelingsprojektmapper. Der er en Opsummerings-projektmappe og mange Afdelingsprojektmapper.
Dine spørgsmål: "Når du skriver mapper - mener du så Projektmapper ?" Ja
"Evt navne på de projektmapper der skal hentes værdier i?" Projektmapperne som der skal hentes værdier i kan have mange navne, da brugeren selv vælger hvad filerne skal gemmes som (der er forskellige medarbejdere som udarbejder filerne som efterfølgende skal opsummeres i denne mappe hvor min kode er i).
"samt hvilke celler" Cellerne i de projektmapper der åbnes har navne som: Afdeling bmk_60 bmk_CV bmk_indberetning
Disse navne er indtastet i et ark i min Opsummeringsprojektmappe. Arket hedder NameBase.
Når programmet kører skal det: 1. Finde den første Afdeligsprojektmappe i den angivne windowsmappe. 2. Åbne Afdelingsprojektmappen 3. Overføre indholdet fra den første celle fra NameBase fra Afdelingsprojektmappen til Opsummeringsprojektmappen i en celle der er bestemt ved et række nummer i NameBase. 4. Overføre indholdet fra den anden celle fra NameBase fra Afdelingsprojektmappen til Opsummeringsprojektmappen i en celle der er bestemt ved et række nummer i NameBase. 5. o.s.v. for alle Afdelingsprojektmapperne i windowsmappen.
Nedenfor har jeg indsat lidt mere af min programkode:
Do Workbooks.Open AfdelingsSti & AfdelingsFiler, False 'åbner afdelingsfil - false betyder, at evt. link i ark opdateres inden data hentes
'Opdatering af alle beregninger og kæder i afdelingsfil Application.CalculateFullRebuild
'Opsamling af Afdelingsnavn samt tildeling af nummer N = N + 1 AfdelingerHentet = AfdelingerHentet & vbCrLf & N & ". " & AfdelingsFiler AfdelingerHentetLog = AfdelingerHentetLog & Now() & " - " & Application.UserName & " - [" & AfdelingsFiler & "]" & vbCrLf
'Information om data der hentes frmLæserData.Caption = "Indlæser data" frmLæserData.lblLæserFra.Caption = "Data indlæses fra :" & vbCrLf & vbCrLf & AfdelingsFiler frmLæserData.Show frmLæserData.Repaint Application.Wait (Now + TimeValue("0:00:1"))
'------------------------------------------------------------------------ 'Sammenligning af variabler og overførelse af data fra afdelingsbilag til oversigt VN = 2
Do 'Undersøger om der er et navn i cellen ellers stopper do If IsEmpty(Range("B" & VN).Value) Then Exit Do
'Læser variabel fra opsummerins projektmappens ark Navnedatabase VNname = Workbooks(ConFilnavn).Application.Cells(VN, NameColumn).Value VNrow = Workbooks(ConFilnavn).Application.Cells(VN, NameColumn + 1).Value
Workbooks(ConFilnavn).Sheets(ConArknavn).Cells(VNrow, N + 1) = VNname
skal være
Workbooks(ConFilnavn).Sheets(ConArknavn).Cells(VNrow, N + 1) = Range(VNname).value
For at indsætte indholdet af cellen i Afdelingsprojektmappen.
Jeg sætter gerne flere point på spørgsmålet hvis du kan hjælpe mig med en løsning der kan hente data fra en anden fil ved brug af nogle definerede cellenavne.
Nu er jeg kommet frem til at denne linje virker når jeg har aktiveret Navnedatabase arket men ikke hvis jeg har aktiveret et andet ark i Opsummeringsprojektmappen.
Hvad har jeg skrevet forkert?
VNname = Workbooks("AKS opsummering 2-8-6 version 1.xls").Worksheets("Navnedatabase").Application.Cells(VN, NameColumn).Value
Jeg får den ikke til at virke uden Application og den vil ikke hente data fra Navnedatabasearket hvis dette ikke er aktiveret. Den henter data fra cellen i det aktive ark.
I VBA projektvinduet hedder arkene NameBase (Navnedatabase) - Hvornår bruger man det ene og hvornår det andet?
I VNname = Workbooks("AKS opsummering 2-8-6 version 1.xls").Worksheets("Navnedatabase").Application.Cells(VN, NameColumn).Value
må der være noget der mangler før at der kan hentes data fra Navnedatabasearket uden at dette er aktiveret.
I min test går det fint uden Application og din burde også virke, kan ike umiddelbart se fejl i linien, men du kan evt. prøve at aktivere arket inden der hentes data:
Workbooks("AKS opsummering 2-8-6 version 1.xls").Sheets("Navnedatabase").Activate
Ja nu virker den også uden application, men hvorfor er Sheets("Navnedatabase") ikke nok til at fortælle programmet at der skal hentes data fra Navnedatabasearket?
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.