Note: The other languages of the website are Google-translated. Back to English

Πώς να αλλάξετε αυτόματα το μέγεθος του σχήματος με βάση / εξαρτάται από την καθορισμένη τιμή κελιού στο Excel;

Εάν θέλετε να αλλάξετε αυτόματα το μέγεθος σχήματος με βάση την τιμή ενός καθορισμένου κελιού, αυτό το άρθρο μπορεί να σας βοηθήσει.

Αυτόματη αλλαγή μεγέθους σχήματος με βάση την καθορισμένη τιμή κελιού με τον κωδικό VBA


Αυτόματη αλλαγή μεγέθους σχήματος με βάση την καθορισμένη τιμή κελιού με τον κωδικό VBA

Ο ακόλουθος κώδικας VBA μπορεί να σας βοηθήσει να αλλάξετε ένα συγκεκριμένο μέγεθος σχήματος με βάση την καθορισμένη τιμή κελιού στο τρέχον φύλλο εργασίας. Κάντε τα εξής:

1. Κάντε δεξί κλικ στην καρτέλα φύλλων με σχήμα που πρέπει να αλλάξετε το μέγεθος και, στη συνέχεια, κάντε κλικ Προβολή κωδικού από το μενού με δεξί κλικ.

2. Στο Microsoft Visual Basic για εφαρμογές παράθυρο, αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα VBA στο παράθυρο Code.

Κωδικός VBA: Αυτόματη αλλαγή μεγέθους σχήματος με βάση την καθορισμένη τιμή κελιού στο Excel

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Row = 2 And Target.Column = 1 Then
        Call SizeCircle("Oval 2", Val(Target.Value))
    End If
End Sub
Sub SizeCircle(Name As String, Diameter)
    Dim xCenterX As Single
    Dim xCenterY As Single
    Dim xCircle As Shape
    Dim xDiameter As Single
    On Error GoTo ExitSub
    xDiameter = Diameter
    If xDiameter > 10 Then xDiameter = 10
    If xDiameter < 1 Then xDiameter = 1
    Set xCircle = ActiveSheet.Shapes(Name)
    With xCircle
        xCenterX = .Left + (.Width / 2)
        xCenterY = .Top + (.Height / 2)
        .Width = Application.CentimetersToPoints(xDiameter)
        .Height = Application.CentimetersToPoints(xDiameter)
        .Left = xCenterX - (.Width / 2)
        .Top = xCenterY - (.Height / 2)
    End With
ExitSub:
End Sub

Note: Στον κώδικα, "Οβάλ 2"Είναι το όνομα σχήματος που θα αλλάξετε το μέγεθός του. Και Σειρά = 2, Στήλη = 1 σημαίνει ότι το μέγεθος του σχήματος "Oval 2" θα αλλάξει με την τιμή στο A2. Αλλάξτε τα όπως χρειάζεστε.

Για αυτόματη αλλαγή μεγέθους πολλαπλών σχημάτων με βάση διαφορετικές τιμές κελιών, εφαρμόστε τον παρακάτω κώδικα VBA.

Κωδικός VBA: Αυτόματη αλλαγή μεγέθους πολλαπλών σχημάτων με βάση την τιμή διαφορετικών καθορισμένων κελιών στο Excel

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xAddress As String
    On Error Resume Next
    If Target.CountLarge = 1 Then
        xAddress = Target.Address(0, 0)
        If xAddress = "A1" Then
            Call SizeCircle("Oval 1", Val(Target.Value))
        ElseIf xAddress = "A2" Then
            Call SizeCircle("Smiley Face 3", Val(Target.Value))
        ElseIf xAddress = "A3" Then
            Call SizeCircle("Heart 2", Val(Target.Value))
        End If
    End If
End Sub

Sub SizeCircle(Name As String, Diameter)
    Dim xCenterX As Single
    Dim xCenterY As Single
    Dim xCircle As Shape
    Dim xDiameter As Single
    On Error GoTo ExitSub
    xDiameter = Diameter
    If xDiameter > 10 Then xDiameter = 10
    If xDiameter < 1 Then xDiameter = 1
    Set xCircle = ActiveSheet.Shapes(Name)
    With xCircle
        xCenterX = .Left + (.Width / 2)
        xCenterY = .Top + (.Height / 2)
        .Width = Application.CentimetersToPoints(xDiameter)
        .Height = Application.CentimetersToPoints(xDiameter)
        .Left = xCenterX - (.Width / 2)
        .Top = xCenterY - (.Height / 2)
    End With
ExitSub:
End Sub

:

1) Στον κώδικα, «Οβάλ 1","Χαμογελαστό πρόσωπο 3"Και"Καρδιά 3"Είναι το όνομα των σχημάτων που θα αλλάξετε τα μεγέθη τους αυτόματα. Και A1, A2 καιA3 είναι τα κελιά από τα οποία θα αλλάξετε το μέγεθος των σχημάτων με βάση.
2) Αν θέλετε να προσθέσετε περισσότερα σχήματα, προσθέστε γραμμές "ElseIf xAddress = "A3" Τότε" και "Μέγεθος κλήσης Κύκλος (" Καρδιά 2 ", Val (Target.Value))"πάνω από το πρώτο"End Ifγραμμή στον κώδικα. Και αλλάξτε τη διεύθυνση του κελιού και το όνομα σχήματος με βάση τις ανάγκες σας.

3. Τύπος άλλος + Q ταυτόχρονα για να κλείσετε το Microsoft Visual Basic για εφαρμογές παράθυρο.

Από τώρα και στο εξής, όταν αλλάζετε την τιμή στο κελί A2, το μέγεθος του σχήματος Oval 2 θα αλλάξει αυτόματα. Δείτε το στιγμιότυπο οθόνης:

Ή αλλάξτε τις τιμές στα κελιά A1, A2 και A3 για να αλλάξετε το μέγεθος των αντίστοιχων σχημάτων "Oval 1", "Smiley Face 3" και "Heart 3" αυτόματα. Δείτε το στιγμιότυπο οθόνης:

Note: Το μέγεθος του σχήματος δεν θα αλλάζει πλέον όταν η τιμή του κελιού είναι μεγαλύτερη από 10.


Λίστα και εξαγωγή όλων των σχημάτων στο τρέχον βιβλίο εργασίας του Excel:

Η καλύτερη Εξαγωγή γραφικών χρησιμότητα του Kutools για Excel θα σας βοηθήσουν να απαριθμήσετε γρήγορα όλα τα σχήματα στο τρέχον βιβλίο εργασίας και μπορείτε να τα εξαγάγετε όλα σε έναν συγκεκριμένο φάκελο ταυτόχρονα με το παρακάτω στιγμιότυπο οθόνης. Κατεβάστε και δοκιμάστε το τώρα! (30- ημέρα δωρεάν διαδρομή)


Σχετικά άρθρα:


Τα καλύτερα εργαλεία παραγωγικότητας του Office

Το Kutools για Excel λύνει τα περισσότερα από τα προβλήματά σας και αυξάνει την παραγωγικότητά σας κατά 80%

  • Επαναχρησιμοποίηση: Εισαγάγετε γρήγορα σύνθετοι τύποι, γραφήματα και οτιδήποτε έχετε χρησιμοποιήσει στο παρελθόν. Κρυπτογράφηση κυττάρων με κωδικό πρόσβασης Δημιουργία λίστας αλληλογραφίας και στείλτε email ...
  • Super Formula Bar (επεξεργαστείτε εύκολα πολλές γραμμές κειμένου και τύπου). Διάταξη ανάγνωσης (εύκολη ανάγνωση και επεξεργασία μεγάλου αριθμού κελιών). Επικόλληση σε φιλτραρισμένο εύρος...
  • Συγχώνευση κελιών / σειρών / στηλών χωρίς απώλεια δεδομένων · Περιεχόμενο διαχωρισμού κελιών Συνδυάστε διπλές σειρές / στήλες... Αποτροπή διπλών κυττάρων; Συγκρίνετε τα εύρη...
  • Επιλέξτε Διπλότυπο ή Μοναδικό Σειρές; Επιλέξτε Κενές σειρές (όλα τα κελιά είναι κενά). Σούπερ εύρεση και ασαφής εύρεση σε πολλά βιβλία εργασίας. Τυχαία επιλογή ...
  • Ακριβές αντίγραφο Πολλαπλά κελιά χωρίς αλλαγή της αναφοράς τύπου. Αυτόματη δημιουργία αναφορών σε πολλαπλά φύλλα? Εισαγωγή κουκκίδων, Πλαίσια ελέγχου και άλλα ...
  • Εξαγωγή κειμένου, Προσθήκη κειμένου, Κατάργηση κατά θέση, Αφαιρέστε το διάστημα; Δημιουργία και εκτύπωση υποσύνολων σελιδοποίησης. Μετατροπή περιεχομένου και σχολίων μεταξύ κελιών...
  • Σούπερ φίλτρο (αποθηκεύστε και εφαρμόστε σχήματα φίλτρων σε άλλα φύλλα). Προηγμένη ταξινόμηση ανά μήνα / εβδομάδα / ημέρα, συχνότητα και άλλα. Ειδικό φίλτρο με έντονη, πλάγια ...
  • Συνδυάστε βιβλία εργασίας και φύλλα εργασίας; Συγχώνευση πινάκων βάσει βασικών στηλών. Διαχωρίστε τα δεδομένα σε πολλά φύλλα; Μαζική μετατροπή xls, xlsx και PDF...
  • Περισσότερα από 300 ισχυρά χαρακτηριστικά. Υποστηρίζει Office / Excel 2007-2021 και 365. Υποστηρίζει όλες τις γλώσσες. Εύκολη ανάπτυξη στην επιχείρηση ή τον οργανισμό σας. Πλήρεις δυνατότητες δωρεάν δοκιμής 30 ημερών. Εγγύηση επιστροφής χρημάτων 60 ημερών.
kte καρτέλα 201905

Το Office Tab φέρνει τη διεπαφή με καρτέλες στο Office και κάνει την εργασία σας πολύ πιο εύκολη

  • Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
  • Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
  • Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ του ποντικιού για εσάς κάθε μέρα!
κάτω μέρος γραφείου
Σχόλια (16)
Δεν υπάρχουν ακόμη βαθμολογίες. Γίνε ο πρώτος που θα αξιολογήσετε!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Πώς θα το εκτελούσατε αυτό με πολλά σχήματα το καθένα ανάλογα με διαφορετικά κελιά;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αγαπητέ Jade,
Το άρθρο ενημερώνεται με μια νέα ενότητα κώδικα που μπορεί να σας βοηθήσει να εκτελέσετε με πολλά σχήματα το καθένα ανάλογα με διαφορετικά κελιά. Σας ευχαριστούμε για το σχόλιό σας.

Best Regards,
Κρύσταλλο
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Πώς ονομάζω το σχήμα μου; Στο παραπάνω παράδειγμά σας, πώς αντιστοιχίζετε το όνομα Oval 2 στον κύκλο που σχεδιάσατε;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αγαπητέ Ranjit,
Για να ονομάσετε ένα σχήμα, επιλέξτε αυτό το σχήμα, εισαγάγετε το όνομα του σχήματος στο πλαίσιο ονόματος και, στη συνέχεια, πατήστε το πλήκτρο Enter. Δείτε την παρακάτω εικόνα που φαίνεται.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, πώς μπορώ να αντιγράψω το ίδιο για πολλά σχήματα που συνδέονται με πολλά κελιά στην ίδια λειτουργική μονάδα;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αγαπητέ Abhinaya,
Το άρθρο ενημερώνεται με μια νέα ενότητα κώδικα που μπορεί να σας βοηθήσει να εκτελέσετε με πολλά σχήματα το καθένα ανάλογα με διαφορετικά κελιά. Σας ευχαριστούμε για το σχόλιό σας.

Best Regards,
Κρύσταλλο
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σας,
Προσπάθησα να χρησιμοποιήσω την ανάρτησή σας για να γράψω τον δικό μου κώδικα VBA, αλλά δεν φαίνεται να προχωράω πολύ. Κυρίως επειδή δεν καταλαβαίνω πραγματικά το VBA και απλώς προσπαθώ να προσαρμόσω το δικό σας. Αναρωτιόμουν αν θα μπορούσατε να βοηθήσετε. Θέλω να αλλάξω το μήκος ενός ορθογωνίου ανάλογα με την τιμή σε ένα κελί. Θα ήθελα το πλάτος αν το παραλληλόγραμμο να παραμείνει ίδιο αλλά το μήκος να αλλάξει. Θα ήθελα και οι δύο κορυφές του αριστερού χεριού να μείνουν στο ίδιο σημείο και να επιμηκυνθεί προς τα δεξιά. Είναι δυνατόν;
Ευχαριστούμε
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αγαπητέ Λαν,
Ελπίζουμε ότι ο παρακάτω κώδικας VBA μπορεί να λύσει το πρόβλημά σας. (Παρακαλώ αντικαταστήστε το Oval 1 με το δικό σας όνομα σχήματος)

Προσωπικό φύλλο εργασίας Sub_change (ByVal Target As Range)
On Error Συνέχιση Επόμενη
Αν Target.Row = 2 Και Target.Column = 1 Τότε
Call SizeCircle ("Oval 1", Val(Target.Value))
End If
Sub End
Sub SizeCircle (Όνομα ως συμβολοσειρά, διάμετρος)
Dim xCircle As Shape
Dim xDiameter As Single
Σε σφάλμα Μετάβαση στο ExitSub
xΔιάμετρος = Διάμετρος
Εάν xDiameter > 10, τότε xDiameter = 10
Αν xDiameter < 1 Τότε xDiameter = 1
Ορισμός xCircle = ActiveSheet.Shapes(Name)
xCircle.ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft
Με το xCircle
.LockAspectRatio = msoFalse
.Width = Application.CentimetersToPoints(xDiameter)
Τέλος με
ExitSub:
Sub End
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, υπάρχει τρόπος να κάνω το σχήμα να επεκταθεί σε δύο διαστάσεις (αντί να αυξήσω το μέγεθος του σχήματος κατά 5, να το αυξήσω 5 στην οριζόντια και 3 στην κάθετη);
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αγαπητέ Σαμ,
Η ακόλουθη δέσμη ενεργειών VBA μπορεί να σας βοηθήσει να λύσετε το πρόβλημα. Και οι δύο διαστάσεις είναι το κελί Α1 και Β1.

Προσωπικό φύλλο εργασίας Sub_change (ByVal Target As Range)
On Error Συνέχιση Επόμενη
Αν Target.Count = 1 Τότε
If Not Intersect(Target, Range("A1:B1")) Is Nothing then
Call SizeCircle("Oval 2", Array(Val(Range("A1").Value), Val(Range("B1").Value)))
End If
End If
Sub End
Sub SizeCircle (Όνομα ως συμβολοσειρά, Arr ως παραλλαγή)
Dim I As Long
Dim xCenterX ως Single
Dim xCenterY As Single
Dim xCircle As Shape
Σε σφάλμα Μετάβαση στο ExitSub
Για I = 0 To UBound (Arr)
Αν Arr(I) > 10 Τότε
Arr(I) = 10
ElseIf Arr(I) < 1 Τότε
Arr(I) = 1
End If
Επόμενο
Ορισμός xCircle = ActiveSheet.Shapes(Name)
Με το xCircle
xCenterX = .Left + (.Width / 2)
xCenterY = .Top + (.Ύψος / 2)
.Width = Application.CentimetersToPoints(Arr(0))
.Ύψος = Εφαρμογή.CentimetersToPoints(Arr(1))
.Left = xCenterX - (.Width / 2)
.Top = xCenterY - (.Ύψος / 2)
Τέλος με
ExitSub:
Sub End
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Υπάρχει τρόπος να γίνει αυτό με τις Εικόνες; Δεν φαίνεται να έχω τύχη χρησιμοποιώντας τον κωδικό όπως δημοσιεύτηκε.

5 εικόνες σε βαθμολογικό πίνακα, θέλω οι Εικόνες στην 1η ή ισόπαλες για την 1η να είναι μεγαλύτερες. Επομένως, έχω 2 σταθερά μεγέθη εικόνας, είτε 1x2 για όχι πρώτη είτε 2x4 για την 1η θέση (για παράδειγμα). Έχω ήδη ρυθμίσει την κατάταξη, ώστε να μπορώ να τη χρησιμοποιήσω για να δημιουργήσω μεγέθη σε συγκεκριμένα κελιά για κάθε εικόνα (δηλαδή χρησιμοποιήστε μια πρόταση IF έτσι ώστε IF RANK είναι το 1ο μέγεθος, το πλάτος είναι 2). Το VBA μου είναι αρκετά αδύναμο όμως.

Βασικά θέλω - στην ενημέρωση φύλλου - να κοιτάξω τα κελιά μεγέθους εικόνας και να ορίσω κάθε μέγεθος εικόνας στο συγκεκριμένο αποτέλεσμα κελιών μεγέθους εικόνας. Δεν μπορώ να δω στο VBA παραπάνω πώς ακριβώς λειτουργεί, αλλά νομίζω ότι θα πρέπει να είναι εύκολο!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Crytal,

Θα ήθελα να σας ρωτήσω, αν υπάρχει τρόπος να επιλέξετε χρώμα (κόκκινο κελί = κόκκινη μορφή) και όνομα από συγκεκριμένα κελιά. θα μπορούσε επίσης να είναι δυνατή η αυτόματη δημιουργία φορμών από το VBA;

Ευχαριστώ πολύ εκ των προτέρων :)

Carol
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Crytal
τι θα γινόταν αν για να προσδιοριστεί η πλευρά του κύβου, του τριγώνου, του κουτιού που πρέπει να καθοριστεί με βάση το μήκος, το πλάτος; Σε παρακαλώ βοήθησέ με

Σας ευχαριστούμε
καρέκλα
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Τσέιρ,
Λυπάμαι, δεν μπορώ να σας βοηθήσω ακόμα σε αυτό. Ευχαριστώ για το σχόλιο σου.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
υπάρχει τρόπος να λειτουργήσει αυτό εάν το κελί που χρησιμοποιείτε για να ορίσετε το μέγεθος είναι το αποτέλεσμα ενός τύπου και όχι απλώς μιας στατικής τιμής που εισάγετε με μη αυτόματο τρόπο;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια mathnz, Ο παρακάτω κώδικας VBA μπορεί να σας βοηθήσει να λύσετε το πρόβλημα. Απλώς πρέπει να αλλάξετε τα κελιά τιμών και τα ονόματα των σχημάτων στον κώδικα με βάση τα δικά σας δεδομένα.
Ιδιωτικό δευτερεύον φύλλο εργασίας_Υπολογισμός()
«Ενημερώθηκε από Extendoffice 20211105
On Error Συνέχιση Επόμενη
Call SizeCircle("Oval 1", Val(Range("A1").Τιμή)) «A1 είναι το κελί τιμής, Οβάλ 1 είναι το όνομα του σχήματος
Call SizeCircle("Smiley Face 2", Val(Range("A2").Value))
Call SizeCircle("Heart 3", Val(Range("A3").Value))

Sub End
Προσωπικό φύλλο εργασίας Sub_change (ByVal Target As Range)
Dim xAddress As String
On Error Συνέχιση Επόμενη
Αν Target.CountLarge = 1 Τότε
xAddress = Target.Address(0, 0)
Αν xAddress = "A1" Τότε
Call SizeCircle ("Oval 1", Val(Target.Value))
ElseIf xAddress = "A2" Τότε
Call SizeCircle ("Smiley Face 2", Val(Target.Value))
ElseIf xAddress = "A3" Τότε
Call SizeCircle ("Heart 3", Val(Target.Value))

End If
End If
Sub End

Sub SizeCircle (Όνομα ως συμβολοσειρά, διάμετρος)
Dim xCenterX ως Single
Dim xCenterY As Single
Dim xCircle As Shape
Dim xDiameter As Single
Σε σφάλμα Μετάβαση στο ExitSub
xΔιάμετρος = Διάμετρος
Εάν xDiameter > 10, τότε xDiameter = 10
Αν xDiameter < 1 Τότε xDiameter = 1
Ορισμός xCircle = ActiveSheet.Shapes(Name)
Με το xCircle
xCenterX = .Left + (.Width / 2)
xCenterY = .Top + (.Ύψος / 2)
.Width = Application.CentimetersToPoints(xDiameter)
.Ύψος = Εφαρμογή.CentimetersToPoints(xDiameter)
.Left = xCenterX - (.Width / 2)
.Top = xCenterY - (.Ύψος / 2)
Τέλος με
ExitSub:
Sub End

Δεν υπάρχουν σχόλια δημοσιεύτηκε ακόμα
Αφήστε τα σχόλιά σας
Δημοσίευση ως επισκέπτης
×
Αξιολογήστε αυτήν την ανάρτηση:
0   Χαρακτήρες
Προτεινόμενες τοποθεσίες

Ακολουθησε μας

Πνευματικά δικαιώματα © 2009 - www.extendoffice.com. | Ολα τα δικαιώματα διατηρούνται. Τροφοδοτείται από ExtendOffice. | Sitemap
Το Microsoft και το λογότυπο του Office είναι εμπορικά σήματα ή σήματα κατατεθέντα της Microsoft Corporation στις Ηνωμένες Πολιτείες ή / και σε άλλες χώρες.
Προστατεύεται από το Sectigo SSL