springstil
Goto Top

VBA In Formel Spaltengröße anpassen

Hallo zusammen,


ich möchte in Excel gerne QR codes erstellen. Das ganze als Formel. Nur stehe ich vor dem Problem das ich gerne die Spalten Größe und Breite mit anpassen möchte.

Function QRCode(QRCode_Wert As String) As String

'Variablen deklarieren  
Dim sURL As String
Dim rngCell As Range
'Zelle auslesen  
Set rngCell = Application.Caller
'URL definieren  
ActiveCell.ColumnWidth = 15
ActiveCell.RowHeight = 100
sURL = "https://chart.googleapis.com/chart?cht=qr&&chs=100x100&&chl=" & QRCode_Wert  
'Alten QR-Code löschen, falls vorhanden  
On Error Resume Next
ActiveSheet.Pictures("QRCode_" & rngCell.Address).Delete  
On Error GoTo 0
'QR-Code einfügen  
With ActiveSheet.Pictures.Insert(sURL)
    .Name = "QRCode_" & rngCell.Address  
    .Left = rngCell.Left + 5
    .Top = rngCell.Top + 5
End With

End Function

Das ist der Code, damit kann ich dann =Qrcode(A1) und er erstellt mir das Bild. Ich bekomme es aber nicht hin

ActiveCell.ColumnWidth = 15
ActiveCell.RowHeight = 100

mit einzubausen. Ggf würde ich auch gerne die Grafik einbetten. Vielleicht kann mir hierbei ja jemand helfen face-smile

Content-Key: 3142890442

Url: https://administrator.de/contentid/3142890442

Printed on: April 24, 2024 at 19:04 o'clock

Member: colinardo
Solution colinardo Jun 22, 2022 updated at 16:27:09 (UTC)
Goto Top
Servus @Springstil,
mit einzubausen. Ggf würde ich auch gerne die Grafik einbetten. Vielleicht kann mir hierbei ja jemand helfen
findest du alles in einem schon in folgendem Beitrag
QR-Code Erzeugung in Excel

Nur zur Info: Das Ändern der Oberfläche (Spalten-/Zeilengröße) aus einer UDF heraus lässt Excel nicht zu. Man kann zwar über die Evaluate-Funktion bestimmte Dinge machen, das Ändern der Zellgröße gehört aber nicht dazu. Hier muss man alternativ dann auf das Worksheet_Change Event ausweichen um die Zelle an die Größe des QR-Codes anzupassen.

Hier ein Beispiel-Sheet dazu:
qrcode_formula_with_resize_3142890442.zip

Grüße Uwe
Member: Springstil
Springstil Jun 23, 2022 updated at 08:37:16 (UTC)
Goto Top
Selbst hier hilfst du mir :P Grandios. Danke für das Skript das ist auf jedenfall schon mal super aus. Nun würde ich das gerne ein wenig Benutzerfreundlicher für uns machen. Ich würde gern sowas wie ein Eingabe fenster erstellen wollen wo ich angebe von wo bis wo er die Daten auslesen soll und wo er sie eintragen soll. Also eine Range. Das sollte ja möglich sein oder?

Ich kann das zwar über eine Imputbox abfragen, aber kann ich die so gestalten das ich in excel dann einfach die Zeilen markiere?


EDIT: Bzw ich stelle gerade fest das es nicht so einfach geht, das ich ihm nur die Range A1:A4 als eingabe sage und er es in z.b B1:B4 schreibt. wie löse ich das dann am besten
Member: colinardo
Solution colinardo Jun 23, 2022 at 08:47:50 (UTC)
Goto Top
Mach dir eine For-Schleife über den Range, bsp.
for each cell in Range("A1:A4")  
    ' range in Spalte B neben der aktuellen Zelle  
    set rngQRCode = cell.Offset(0,1).Value
Next
Member: Springstil
Springstil Jun 23, 2022 at 09:16:25 (UTC)
Goto Top
Okay den schnipsel verstehe ich, allerdings nicht wie ich das in deinem Makro implementieren soll. Hast du hier noch nen tipp ?
Member: colinardo
Solution colinardo Jun 23, 2022 updated at 09:31:33 (UTC)
Goto Top