• 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.

celinhoud kopieren uit een bereik

Status
Niet open voor verdere reacties.

marcelvba

Gebruiker
Lid geworden
26 jul 2010
Berichten
40
Hallo mensen,

Ik ben hier nieuw en ook met VBA nog vrij vers. Ik ben op dit moment bezig met een project en tegen wat zaken opgelopen. Veelal zelf opgelost maar deze keer zit ik met een hersenkraker. Hoop hier wat stappen in de goede richting te verzamelen.

Het probleempje:

Ik heb een bereik (stel a1:c10)
Er is altijd maar 1 cel gevuld in deze matrix na genomen keuzes (Telkens dus een andere ingevulde cel mogelijk)
Nu wil ik deze waarde (ingevulde cel) kopieren naar bv d1
Wat ik ook probeerde, het lukte niet.(Het leek zo simpel tov wat ik al oplostte)

Kan iemand mij een tip geven?

Bij voorbaat dank.

Marcel
 
Hallo,

Als het maar om 1 gevulde cel in het bereik A1:C10 gaat zou dit volstaan
Code:
Sub tst()
[D1] = [A1:C10].SpecialCells(2)
End Sub

Met vr gr
Jack
 
Hallo Jack,

Bedankt voor je reactie

Ik heb je oplossing toegepast en kreeg de mededeling "cellen niet gevonden"

Nu dacht ik dat nog moest toevoegen waar ze precies staan en heb jou sub dan ook aangepast.
Ik wil dat de waarde gekopieerd wordt nadat een userform afgesloten wordt.(dan is waarde bekend)

De routine is dan ook geplaatst na

Unload Me
End Sub

van de desbetreffende Userform.

Code:
Sub tst()
[blad2!m1] = [blad2!j10:m33].SpecialCells(2)
End Sub

Maar helaas geen waarde in M1 (blad2), ook geen foutmelding overigens.

Wat zie nog over het hoofd

Marcel
 
Laatst bewerkt door een moderator:
heb hier ook even getest uit interesse, dit werkt prima als er slechts één cel gevuld is met een waarde.

Als er meerdere gevuld zijn gaat het mis maar dat was ook de vraag niet.


Code:
Sub tst()
Sheets(2).Range("m1").Value = Sheets(2).Range("J10:m33").SpecialCells(2)
End Sub


dit werkt bij mij voor jouw bereik in ieder geval wel.( oplossing van Jack Nouws aangepast)
 
Laatst bewerkt:
MJONK

Bedankt voor aanvullende iinfo en mooi dat het kan werken.

Ik heb Sub tst() aan een button gehangen en het getest.

Echter krijg ik de foutmelding 1004, cellen niet gevonden.

Als ik nu wil dat het uitgevoerd wordt, na het sluiten van een Userform, waar plaats ik het dan?

Jammer dat ik het nog niet voor elkaar heb, of gewoonweg het ei van columbus niet zie.

bedankt in ieder geval.

Marcel
 
Post anders je bestandje eens, zodat we kunnen zien wat er mis gaat of hoe de macro aangepast kan worden
 
Warme bakkertje,

Ja, dit wou ik al doen, maar moest even kijken hoe.

Bij deze de poging

Marcel

i
 

Bijlagen

zo iets?

Code:
Sub tst2()
  Range("m1") = ""
  Dim C As Range
  For Each C In Range("J10:m33")
    If C <> "" Then
      Range("m1") = C
      Exit Sub
    End If
  Next C
End Sub

groet sylvester
 
Sylvester,

Dit werkt, mooi om te het zien werken.

Nu nog een stap want gekoppeld aan een button ging het perfect. Maar nu verwerkt binnen de userform welke bij afsluiten deze routine moet volgen. Ik heb het her en der heen gekopieerd maar dat ging nog niet.

De routine voor unload me plaatsen leverde op dat de userform niet wegging, maar bleef hangen.
De routine in een module was ook geen optie....

In ieder geval bedankt, toppie.

Marcel
 
Marcel,

Toch kan het ook met een formule:
Als in het bereik alleen cijfers staan:
Code:
=ALS(AANTAL($A$1:A10)=0;"";SOM($A$1:A10))

Als in het bereik alleen tekst staat:
Code:
=ALS(AANTALARG($A$1:A11)=0;"";INDEX($A$1:A11;VERGELIJKEN("zzzzz";$A$1:$A$10;WAAR)))

Als in het bereik zowel tekst als en getal kan staan:
Code:
=ALS(EN(AANTALARG($A$1:$A$10)=0;AANTAL($A$1:$A$10)=0);"";ALS(AANTAL($A$1:$A$10)>0;SOM($A$1:$A$10);INDEX($A$1:$A$10;VERGELIJKEN("zzzz";$A$1:$A$10;WAAR))))

emil
 
Laatst bewerkt door een moderator:
Code:
Private Sub UserForm_Terminate()
    [M1] = ""
    Dim C As Range
    For Each C In [J10:M33]
        If C <> "" Then [M1] = C: Exit Sub
    Next C
End Sub
 
hoi
hier een kleine aanpassing
die vorige versie werkt in het actieve blad en deze in blad2


Code:
Sub tst3()
  Worksheets("Blad2").Range("m1") = ""
  Dim C As Range
  For Each C In Worksheets("Blad2").Range("J10:m33")
    If C <> "" Then
      Worksheets("Blad2").Range("m1") = C
      Exit Sub
    End If
  Next C
End Sub

ik heb tst3 ingevuld in
Code:
Private Sub ok_click()

[Blad2!a1] = combobox1.Value
[Blad2!a2] = bemand.Value
[Blad2!a3] = onbemand.Value
[Blad2!a4] = overdag.Value
[Blad2!a5] = nachts.Value

Unload Me
tst3
End Sub

en dan werkt het gewoon

groet sylvester
 
Hallo,

Ik wou iedereen bedanken voor de tips.

Inmiddels werkt het uit de kunst en kan ik verder....mooi om te zien nogmaals.

groeten,

Marcel
 
Zet je de vraag dan nog even op opgelost
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan