Avatar billede jnh Nybegynder
11. december 2008 - 12:09 Der er 4 kommentarer og
1 løsning

Funktion for hvert worksheet i excel

Hej.

Jeg er en dør til VB, men kunne godt bruge en funktion på mit "Forsiden" sheet.
Jeg har en række ens worksheets i et Excel-ark og for hver af disse, vil jeg gerne have værdien i celle B4, B6 og B9 fra hvert af disse ark til at stå på et forside-ark.

Jeg forestiller mig noget i retning af (pseudo):

Dim wsSheet As Worksheet
Dim currentRow As Range

currentRow = 10 'Start at row 10

For Each wsSheet In Worksheets

    If wsSheet.Name is Not Sheet1
    Sheet1.Cells(currentRow, 1) = wsSheet.Cells(4, B)
    Sheet1.Cells(currentRow, 2) = wsSheet.Cells(6, B)
    Sheet1.Cells(currentRow, 3) = wsSheet.Cells(9, B)
   
Next wsSheet

Mvh
Jesper
Avatar billede jonasboege Praktikant
11. december 2008 - 12:42 #1
Hej - her er mit bud.

Sub hjaelp()
Dim shtName As Variant, currentRow As Integer

currentRow = 10 'Start at row 10

Sheets(1).Select
AntalArk = Worksheets.Count - 1

For Tael = 1 To AntalArk
   
    ActiveSheet.Next.Select
    shtName = ActiveSheet.Name

    Sheets(1).Cells(currentRow, 1).Value = shtName
    Sheets(1).Cells(currentRow, 2).FormulaLocal = "='" & shtName & "'!B4"
    Sheets(1).Cells(currentRow, 3).FormulaLocal = "='" & shtName & "'!B6"
    Sheets(1).Cells(currentRow, 4).FormulaLocal = "='" & shtName & "'!B9"
   
    currentRow = currentRow + 1

Next Tael

Sheets(1).Select
Range("A10").Select

End Sub
Avatar billede jonasboege Praktikant
11. december 2008 - 12:43 #2
Hov - det var jo et svar...

Sub hjaelp()
Dim shtName As Variant, currentRow As Integer

currentRow = 10 'Start at row 10

Sheets(1).Select
AntalArk = Worksheets.Count - 1

For Tael = 1 To AntalArk
   
    ActiveSheet.Next.Select
    shtName = ActiveSheet.Name

    Sheets(1).Cells(currentRow, 1).Value = shtName
    Sheets(1).Cells(currentRow, 2).FormulaLocal = "='" & shtName & "'!B4"
    Sheets(1).Cells(currentRow, 3).FormulaLocal = "='" & shtName & "'!B6"
    Sheets(1).Cells(currentRow, 4).FormulaLocal = "='" & shtName & "'!B9"
   
    currentRow = currentRow + 1

Next Tael

Sheets(1).Select
Range("A10").Select

End Sub
Avatar billede jnh Nybegynder
11. december 2008 - 13:56 #3
tak for det... det virker ;)
Avatar billede jonasboege Praktikant
11. december 2008 - 14:05 #4
Der er helt sikkert en smartere måde at gøre på det end at løbe alle ark igennem for at finde navnet... men jeg er ikke nået dertil i mit selvstudium endnu...
Avatar billede jonasboege Praktikant
11. december 2008 - 15:02 #5
Sådan - så slipper man for at løbe alle arkene igennem for at få navnet...
Tak for spørgsmålet - jeg kan godt selv komme til at bruge den fremover :-)

Sub LidtBedre

Dim currentRow As Integer

currentRow = 10 'Start at row 10

Sheets(1).Select
AntalArk = Worksheets.Count

For arkNr = 2 To AntalArk
   
    Sheets(1).Cells(currentRow, 1).Value = Sheets(arkNr).Name
    Sheets(1).Cells(currentRow, 2).FormulaLocal = "='" & Sheets(arkNr).Name & "'!B4"
    Sheets(1).Cells(currentRow, 3).FormulaLocal = "='" & Sheets(arkNr).Name & "'!B6"
    Sheets(1).Cells(currentRow, 4).FormulaLocal = "='" & Sheets(arkNr).Name & "'!B9"
   
    currentRow = currentRow + 1

Next arkNr

Range("A10").Select

End Sub
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
Kategori
Kurser inden for grundlæggende programmering

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