Macro vba - Creare Shape con verioni 2003 e 2007

Anonimo
2012-05-04T13:57:29+00:00

ActiveSheet.Shapes.AddTextEffect(msoTextEffect1, cli2 & Chr(13) & "" & Chr(10) & prprl, "Arial Black", 80#, msoFalse, msoFalse, 0, 640).Select '90#

    Selection.ShapeRange.IncrementRotation -90#

    Selection.ShapeRange.IncrementLeft -50#

    Selection.ShapeRange.ScaleHeight 1.27, msoFalse, msoScaleFromBottomRight

    Selection.ShapeRange.ScaleHeight 1.15, msoFalse, msoScaleFromTopLeft

'   Selection.ShapeRange.IncrementTop 80#

    Selection.ShapeRange.Fill.Visible = msoTrue

    Selection.ShapeRange.Fill.Solid

    Selection.ShapeRange.Fill.ForeColor.SchemeColor = 22

    Selection.ShapeRange.Fill.Transparency = 0.5

'    Selection.ShapeRange.Fill.Transparency = 0.01

    Selection.ShapeRange.Line.Weight = 0.75

    Selection.ShapeRange.Line.DashStyle = msoLineSolid

    Selection.ShapeRange.Line.Style = msoLineSingle

    Selection.ShapeRange.Line.Transparency = 0#

    Selection.ShapeRange.Line.Visible = msoFalse

'    Selection.ShapeRange.Line.ForeColor.SchemeColor = 22

'    Selection.ShapeRange.Line.ForeColor.RGB = RGB(0, 0, 0)

'    Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)

    Range("h39").Select

grazie mille

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-05-09T14:15:42+00:00

Niente di niente , ho provato anche con un office 2010 , mi registra il codice macro ma quando lo inserisco nel 2007 si inchioda su un'istruzione fondamentale brightness = 0

Ma anche se funzionasse il rischio è quello che con la versione 2007 funziona, con la 2003 non più.

Cerco una soluzione alternativa a questi Shape (casella di testo nel mio caso)

 

Continua a sfuggirmi qualcosa:

Public Sub m()

    Dim lTop As Long

    lTop = 5

    ActiveSheet.Shapes.AddShape( _

        msoShapeRoundedRectangle, 20, lTop, 105, 60 _

        ).Select

    With Selection

        .ShapeRange.ShapeStyle = 1

        .ShapeRange(1).TextFrame2.TextRange.Characters.Text = _

            "ABCD"

        .ShapeRange(1).Fill.Transparency = 1

        .ShapeRange(1).Rotation = 270

    End With

End Sub

Se il tuo problema è la versione, intercettala e utilizza due codici diversi.

Codice per verificare la versione di Excel installata sulla macchina. Nel caso siano installate più versioni, viene rilevata quella più nuova o quella di default per il programma.

Public Sub m()

    Dim xlApp As New Excel.Application

    Select Case Val(Mid(xlApp.Version, 1, _

        InStr(1, xlApp.Version, ".") - 1))

        Case 14

            MsgBox "Excel 2010"

        Case 12

            MsgBox "Excel 2007"

        Case 11

            MsgBox "Excel 2003"

        Case 10

            MsgBox "Excel 2002(XP)"

        Case 9

            MsgBox "Excel 2000"

    End Select

    Set xlApp = Nothing

End Sub

Stessa cosa ma restituisce la versione del file che contiene la macro.

Public Sub m()

    Select Case Val(Mid(Application.Version, 1, _

        InStr(1, Application.Version, ".") - 1))

        Case 14

            MsgBox "Excel 2010"

        Case 12

            MsgBox "Excel 2007"

        Case 11

            MsgBox "Excel 2003"

        Case 10

            MsgBox "Excel 2002(XP)"

        Case 9

            MsgBox "Excel 2000"

    End Select

End Sub

Questa Funzione restituisce il numero della versione attiva al momento della chiamata:

Public Function f() As Long

    With Application

        f = Val(Mid(.Version, 1, _

            InStr(1, .Version, ".") - 1))

    End With

End Function

La risposta è stata utile?

0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-05-07T20:10:15+00:00

    Non c'è soluzione o non mi sono spiegato bene ?

    E' veramente una cosa strana questa

    grazie

    Scusami, brutta giornata. Rispondo domani. Grazie per la pazienza.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-05-07T16:40:01+00:00

    Non c'è soluzione o non mi sono spiegato bene ?

    E' veramente una cosa strana questa

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-05-04T19:26:58+00:00

    noooo . Sono fuso, non ho copiato il testo che riguardava il problema...

    Ci riprovo a spiegare, praticamente ho ereditato questo excel creato con la versione 2003, il codice sopra crea lo shape con alcuni campi variabile , esempio nome cliente, lanciando con 2003 il shape veniva creato ma in sovrapposizione (sia forma che testo penso senza ombreggiatura), e si potevano vedere i contenuti delle celle e come in sovrapposizione (ma come se fosse sotto alle celle) lo shape.

    Lanciandolo con lo stesso codice ma in 2007, lo shape mi oscura il contenuto delle celle perchè sembra andare in sovrapposizione ma sopra al contenuto delle celle, oscurandone alcuni valori.

    Penso si tratti del Riempimento sia nella forma che nel testo ma non so come toglierlo da codice (evidentemente con il 2007 il codice sopra non basta) . Penso si tratti del riempimento ma non sono sicuro.

    Scusate ancora per l'errato copia/incolla e grazie mille

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-05-04T14:28:23+00:00

        <cut>

    grazie mille

    Se spieghi cosa vorresti fare, forse riusciamo ad aiutarti.

    Vedo solo del codice.

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento