Följande kodavsnitt (Tack Åsa!) är tänkt att leta upp Image-objekt på totalt 9 olika flikar i Excel och lägga dessa i en två-dimensionell vektor: Det första jag tänker på är att du loopar för långt. Om du skriver for i=2 to 10 är det ju inte säkert att det finns 10 objekt. Ibland är variabler s.k. zero-based, vilket betyder att det första objektet är 0, och istället för 5 är det alltså 4. Så testa att skriva for x = a to b-1 Ja, det var verkligen mystiskt! Tack för svaren, Pelle och Åsa! Det fungerade bra för mig när jag hade tagit bort ett "t" ur konstantnamnet så att det står "fmPictureSizeModeZoom". Ja jisses...vilket pucko man är! Jag brukar inte missa sånt....men var väl trött... Använd <code>Option Explicit</code> så hade du fått besked vid kompileringen.Mystiskt fel....
For i% = 2 To 10
nIdx = 0
For Each oObj In Sheets(i%).OLEObjects
If TypeName(oObj.Object) = "Image" Then
oObj.Object.BorderStyle = fmBorderStyleNone
nIdx = nIdx + 1
Set imBox(i%, nIdx) = oObj
End If
Next oObj
MsgBox i% & " " & nIdx
Next i%
Fungerar alldeles utmärkt för alla flikar (vilket jag ser av utskriften i meddelande-boxen), utom för EN flik (i% = 5) där jag får felmeddelandet: "Kunde inte hitta Object egenskapen för OLEObject klassen". Felet inträffar i If-satsen med TypeName.
Trodde att det berodde på något i fliken som sådan, varför jag helt enkelt kopierade en av de andra (samtliga flikar har likadant utseende/design) och därefter tog bort den "felaktiga". Samma fel!
Någon som har en aning om vad detta beror på?
Sv: Mystiskt fel....
Sv: Mystiskt fel....
Undrar om det kan vara något OLEObject som inte är laddat, kontroller är alltid laddade men något annat objekt kanske. Jag fick samma fel när jag länkade in ett worddokument som jag sedan raderade innan jag körde din kod.
Testa lite felsökning, koden nedan markerar det objekt där felet uppstod
<code>
On Error Resume Next
For i% = 1 To Sheets.Count
nIdx = 0
For Each oObj In Sheets(i%).OLEObjects
If TypeName(oObj.Object) = "Image" Then
nIdx = nIdx + 1
If Err.Number <> 0 Then
MsgBox "Fel på flik " & i% & ", objekt " & nIdx
With Sheets(i%)
If .Visible = False Then .Visible = True
.Select
.OLEObjects.Select
End With
Err.Clear
Exit Sub
End If
End If
Next oObj
MsgBox nIdx & " objekt på flik " & i%
Next i%
</code>Sv: Mystiskt fel....
Grunnade inte mera på problemet, utan gjorde helt sonika så att jag först helt tog bort aktuell flik och sedan tog en av de övriga och kopierade i den borttagnas ställe...och si..det fungerade! Varför kan man ju fråga sig. Har inte hunnit laborera med din kod än Åsa.
I anslutning till detta körde jag dock ånyo in i väggen (om det är ok att dra detta problem i denna tråd, de har förvisso med varandra att göra eftersom det handlar om bild-objekt i samma applikation):
Följande kod fungerar uppenabrligen (bilderna hamnar snyggt anpassade till objektets storlek i arket:
Private Sub btnCommandButton1_Click()
Image1.PictureSizeMode = fmPictureSizeModeZoom
Image2.PictureSizeMode = fmPictureSizeModeZoom
Image1.Picture = LoadPicture("C:\Pemel\produkter\bild1.jpg")
Image2.Picture = LoadPicture("C:\Pemel\produkter\bild2.jpg")
End Sub
Men, denna gör det inte! Jag tycker det borde vara samma sak:
Dim imBox(2) As OLEObject
_____________________________________________________________
Private Sub btnCommandButton1_Click()
Dim oObj As OLEObject
nIdx = 0
For Each oObj In Sheets(1).OLEObjects
If TypeName(oObj.Object) = "Image" Then
nIdx = nIdx + 1
Set imBox(nIdx) = oObj
End If
Next oObj
imBox(1).Object.PictureSizeMode = fmtPictureSizeModeZoom
imBox(1).Object.Picture = LoadPicture("C:\Pemel\produkter\bild1.jpg")
imBox(2).Object.PictureSizeMode = fmtPictureSizeModeZoom
imBox(2).Object.Picture = LoadPicture("C:\Pemel\produkter\bild2.jpg")
End Sub
Titttar jag i egenskapsrutan för bild-objekten så vägrar den ändra "PictureSizeMode" till "Zoom", med
påföljd att bilderna inte anpassas till bild-objektens fysiska storlek.
Återigen(suck)....varför tror ni?Sv: Mystiskt fel....
Sv: Mystiskt fel....
Tack återigen Åsa, du är en ständig källa till glädje! ! Sv: Mystiskt fel....