• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Lijst van waarden uit bereik halen in VBA

Status
Niet open voor verdere reacties.

Sanglan

Gebruiker
Lid geworden
28 okt 2018
Berichten
15
Hallo,

Ik heb een macro die ik HIER heb gevonden die ik een beetje wil aanpassen.

Wat de macro doet is een inputbox openen, waar ik door comma gescheiden woorden in kan vullen, en die vervolgens dikgedrukt en gekleurd worden. In plaats daarvan wil ik een tabblad maken, waarin ik een bepaalde range toewijs, en de woorden die daar in staan dus de macro 'in gooi'. Ik heb al een beetje geklooid, maar krijg het niet voor elkaar.

Het gaat hierom, en de dikgedrukte regel zou dus veranderd moeten worden in een bepaald bereik:

Sub MAIN()
Dim MyList As String, arr, a
MyList = Application.InputBox(Prompt:="give me comma-separated text strings", Type:=2)
arr = Split(MyList, ",")
For Each a In arr
Call HighlightStrings(a)
Next a
End Sub

Sub HighlightStrings(cFnd As Variant)
'Updateby Extendoffice 20160704
Application.ScreenUpdating = False
Dim Rng As Range
Dim xTmp As String
Dim x As Long
Dim m As Long
Dim y As Long

y = Len(cFnd)
For Each Rng In Selection
With Rng
m = UBound(Split(Rng.Value, cFnd))
If m > 0 Then
xTmp = ""
For x = 0 To m - 1
xTmp = xTmp & Split(Rng.Value, cFnd)(x)
.Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
.Characters(Start:=Len(xTmp) + 1, Length:=y).Font.Bold = True
xTmp = xTmp & cFnd
Next
End If
End With
Next Rng
Application.ScreenUpdating = True
End Sub

Ik heb dit geprobeerd:

Sub MAIN()
Dim MyList As String, arr, a
MyList = Range("A2:A4")
arr = Split(MyList, ",")
For Each a In arr
Call HighlightStrings(a)
Next a
End Sub

Maar dat gaat mis, omdat dat niet comma-separated is en ik weet niet hoe ik dat kan tweaken.

Nog een klein 'nice to have' verzoekje trouwens. Ik zou ook een tweede variant van de macro willen hebben, waarbij wel die inputbox moet blijven staan, maar waarbij ik ook de kleur van de tekst kan bepalen met een colorpicker. Ik ben een eind gekomen, maar uiteindelijk werkte mijn versie toch niet.

Ik hoop dat iemand me daarmee kan helpen. Hartelijk dank alvast!
 
Laatst bewerkt:
Wijzig het typegetal; Type:= 8

Kun je zo een cel of een bereik selecteren.
 
Dank voor het snelle antwoord! Dat had ik ook al geprobeerd, maar werkte alleen als ik 1 cel selecteerde, niet meerdere.
Daarnaast wil niet elke keer een bereik selecteren, maar een vast bereik aangeven in de VBA zelf.
 
Je kan gewoon een heel bereik selecteren hoor.

Geen flauw idee wat je wil.
Je code staat niet in codetags en je plaatst geen bestand.

Dit begrijp ik eruit:
Code:
arr = range("a2:a4")
 
Laatst bewerkt:
Zo misschien? Ik begrijp ook niet echt wat de bedoeling is. De vorige post doet precies hetzelfde

Code:
Sub MAIN()
Dim MyList As String, arr, a
ar = Array([A2], [A3], [A4])
arr = Split(Join(ar, ","), ",")
    For Each a In arr
        Call HighlightStrings(a)
    Next a
End Sub
 
Laatst bewerkt:
Dit zal hetzelfde doen.
Code:
Sub MAIN()
dim arr, a
 arr = range("a2:a4")
    For Each a In arr
        Call HighlightStrings(a)
    Next a
End Sub
 
Laatst bewerkt:
Klopt ik had het al aangepast in mijn vorige post:d
 
Ik was wel een "r" in arr vergeten trouwens.
Maar verder ga ik maar eens niet gokken met codes zonder te weten wat de bedoeling is.
 
Excuus voor het vage verhaal, maar hij doet het! Bedankt allemaal!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan