Avatar billede tobler Nybegynder
19. marts 2004 - 11:21 Der er 4 kommentarer og
1 løsning

Query macro med variabel cellereference og næste celle

Jeg har følgende macro/query hvor jeg henter nogle varedata.

Det jeg har brug for, er at dataen bliver afleveret i cellen til højre for den aktuelle celle, dvs. jeg står i celle A4 og ønsker resultatet i B4 til G4 i dette tilfælde.

Samtidig ønsker jeg at indholdet af den aktuelle celle A4 bli'r brugt som parameter i min søgning: WHERE (LagKart.Varenummer='ASE04') hvor 'ASE04' erstattes med indholdet i den aktuelle celle.

Næste query vil så skulle køre med indholdet i A5, A6 etc.

det hele har jeg tænkt mig at lægge på en knap.

Sub HentData()
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=c5_cdat_sys;UID=Supervisor;DBQ=c:\gbs\c5data.dat;CODEPAGE=1252;DIRS=c:\gbs;UID=Supervisor;NAMECASE=Unchanged;DISPLAYNAME=DI" _
        ), Array("CT;HIGHASCII=TRUE;BLANKISNULL=FALSE;DEBUG=FALSE;")), Destination:=Range("B4"))
        .CommandText = Array( _
        "SELECT LagKart.Varenummer, LagKart.Varenavn1, LagKart.Varenavn2, LagKart.Varenavn3, LagKart.Kostvaluta, LagKart.Kostpris  FROM LagKart LagKart  WHERE (LagKart.Varenummer='ASE04')")
        .Name = "Query c5 varenummer_3"
        .FieldNames = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceConnectionFile = _
        "C:\windata\Excel\Diverse\ODBC_test\Query c5 varenummer_3.dqy"
        .Refresh BackgroundQuery:=False
    End With
End Sub
Avatar billede kabbak Professor
19. marts 2004 - 12:15 #1
Sub HentData()
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=c5_cdat_sys;UID=Supervisor;DBQ=c:\gbs\c5data.dat;CODEPAGE=1252;DIRS=c:\gbs;UID=Supervisor;NAMECASE=Unchanged;DISPLAYNAME=DI" _
        ), Array("CT;HIGHASCII=TRUE;BLANKISNULL=FALSE;DEBUG=FALSE;")), Destination:=Activecell.offset(0,1))
        .CommandText = Array( _
        "SELECT LagKart.Varenummer, LagKart.Varenavn1, LagKart.Varenavn2, LagKart.Varenavn3, LagKart.Kostvaluta, LagKart.Kostpris  FROM LagKart LagKart  WHERE (LagKart.Varenummer='ASE04')")
        .Name = "Query c5 varenummer_3"
        .FieldNames = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceConnectionFile = _
        "C:\windata\Excel\Diverse\ODBC_test\Query c5 varenummer_3.dqy"
        .Refresh BackgroundQuery:=False
    End With
End Sub
Avatar billede tobler Nybegynder
19. marts 2004 - 12:41 #2
Fint kabbak, første del virker perfekt.

Har du også et bud på, hvordan Activecell skal skrues sammen her: WHERE (LagKart.Varenummer='ASE04'), hvor ASE04 erstattes med en form for ActiveCell.
Avatar billede tobler Nybegynder
19. marts 2004 - 16:25 #3
Jeg fandt selv løsningen på anden halvdel, godt nok efter mange forsøg: WHERE (LagKart.Varenummer='" & ActiveCell.Value & "')

Lægger du et svar, og mange tak for hjælpen.
Avatar billede kabbak Professor
19. marts 2004 - 17:02 #4
Godt du fandt ud af resten, har ikke været ved pc'en siden middag.
Avatar billede kabbak Professor
24. marts 2004 - 10:08 #5
tak for pointz ;-))
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester