14. oktober 2010 - 10:16Der er
14 kommentarer og 1 løsning
VBA find værdi i ekstern regneark og returner kolonnenr
Er der nogen der kan hjælpe mig med en funktion som leder efter en værdi i et eksternt excelark i en bestemt række og hvis den finder værdien så returnere den kolonne nr ?
funktionsnavn(ekstern Excelarks placering og navn,Arknavn,Række,værdi) returner kolonnenr for værdi i ekstern ark som den finder først
Rem Indsættes i Modul Rem I A1 er komplet sti anført Rem BrugerDefineret Function Rem =søgVærdi(A1;2;16;88) (sti,arkNr,Række,Værdi) Rem Rem ============================================= Public Function søgVærdi(sti, ark, række, værdi) Dim xlsObj As Object, kol As Integer, cVærdi On Error GoTo fejl
Set xlsObj = CreateObject("Excel.Application") With xlsObj .Workbooks.Open sti .ActiveWorkbook.Sheets(ark).Activate antalkolonner = .ActiveCell.SpecialCells(xlLastCell).Column
søgVærdi = 0
For kol = 1 To antalkolonner cVærdi = .Cells(række, kol) If cVærdi = værdi Then søgVærdi = kol 'kolonneNr returneres Exit For End If Next kol
i det eksterne ark er der ref. til andre eksterne ark, når du så åbner dem i funktionen vil den gerne opdatere disse kæder, og det skal den ikke, og når den lukker arket spørges der om jeg vil gemme ændringerne, og det skal den ikke den skal bare efterlade det som det var da den åbende det
Rem VERSION 2 Rem ========= Rem Indsættes i Modul Rem I A1 er komplet sti anførtcel Rem BrugerDefineret Function Rem =søgVærdi(A1;2;16;88) (sti,arkNr,Række,Værdi) Rem Rem ============================================= Public Function søgVærdi(sti, ark, række, værdi) Dim xlsObj As Object, kol As Integer, cVærdi 'On Error GoTo fejl
Set xlsObj = CreateObject("Excel.Application") With xlsObj .Application.DisplayAlerts = False '<-- +
.Workbooks.Open sti .ActiveWorkbook.Sheets(ark).Activate antalkolonner = .ActiveCell.SpecialCells(xlLastCell).Column
søgVærdi = 0
For kol = 1 To antalkolonner cVærdi = .Cells(række, kol) If cVærdi = værdi Then søgVærdi = kol 'kolonneNr returneres Exit For End If Next kol
fejl: xlsObj.ActiveWorkbook.Saved = True '<-- + xlsObj.Quit Set xlsObj = Nothing End With
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.