Dim adres as string

Status
Niet open voor verdere reacties.

Oude leerling

Gebruiker
Lid geworden
30 aug 2010
Berichten
554
Geacht forum,

Ik wil een adresblok vastleggen
Dit adresblok staat in B6:B8

Onderstaande code werkt maar legt alleen de naam vast
Als ik de code wijzig in ,
Code:
Set Adres = .Range("B6:B8")
, dan werkt het niet.
Weet u hier een oplossing voor?

Code:
Dim Adres As String
 With Sheets("Offerte")
         Set Adres = .Range("B6")
 End With

Jaap
 
Declareer geen variabelen. Dan gaat het in jouw geval altijd goed.

Code:
c00=sheets("offerte").range("B6")
msgbox c00
 
Het keyword Set is niet om gedeclareerde variabelen van een waarde te voorzien maar declareerde objecten met een object te vullen.
 
Ik ben niet helemaal duidelijk geweest in mijn vraagstelling

Wat wil ik doen!
en
Kan dit met Dim As?

Van bestand A Adresblok , Range("B6:B8")---Bestelling , Range("A19:E28") ----Verzendkosten Range("G31")
(Offerte)
verplaatsen naar


naar bestand B Range("B6")----Range("A19")-----Range("G31")
(Factuur)
 
Laatst bewerkt:
Dat zal best wel lukken met een fatsoenlijk voorbeeld bestand (A en B), maar met Dim heeft dat niets van doen.
 
Als ik uw vraag goed begrijp wil je met het blokje B6:B8 iets aanvangen, in uw vraag is niet duidelijk wat.
Misschien kan je hier wat inspiratie uithalen.
Als ik de code van Snbie erbij haal met het blokje in mijn achterhoofd maak ik er dit van.
Code:
Sub test()
With Sheets("offerte")
c00 = .[B6] & Chr(10) & .[B7] & Chr(10) & .[B8]
MsgBox c00
End With
End Sub
 
edmoor,

Ik heb onderstaande code gemaakt om gegevens van een offerte op de Factuur te zetten.


De offerte staat in het bestand "2317-23" en op blad "Offerte"
de factuur staat in het bestand "Factureren" op blad "Factuur"

de onderstaande code geeft in regel 20 en 30 een fout 9 , "Subscript valt buiten het bereik"
als ik echter in die regels Naam1 verander in , in dit geval , "2317-23" , dan werkt het wel
Naam1 is echter een variabele en in regel 10 lukt dat wel.
Waarom dan niet in regel 20 en 30??
Jaap

Code:
 Sub Factuur_maken()
    Application.ScreenUpdating = False
Dim Naam1 As String
    Naam1 = Range("D" & Range("L1")).Value
10  Workbooks.Open Filename:="C:\Users\Gebruiker\Documents" & "\" & Naam1 & ".xlsm"
    
    Range("A18:F27").Select
    Selection.Copy
    Workbooks("Factureren.xlsm").Activate
    Sheets("Factuur").Select
    Range("A18").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
20  Workbooks("Naam1").Activate
    Sheets("Offerte").Select
    Range("B5:B7").Select
    Selection.Copy
    Workbooks("Factureren.xlsm").Activate
    Sheets("Factuur").Select
    Range("B5").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    
30  Workbooks("Naam1").Activate
    Sheets("Offerte").Select
    Range("G30").Select
    Selection.Copy
    Workbooks("Factureren.xlsm").Activate
    Sheets("Factuur").Select
    Range("G30").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Workbooks("2017-23.xlsm").Close False
    
    Sheets("Offerte beheer").Select
    Application.ScreenUpdating = True
End Sub
 
Zonder het bijbehorende document kan ik daar niets van zeggen. De melding is duidelijk, maar zo niet na te kijken.
 
Oke , ik hoop dat het lukt.
 

Bijlagen

  • 2017-23.xlsm
    17,9 KB · Weergaven: 38
  • Factureren.xlsm
    26,1 KB · Weergaven: 43
@OL

Lees jij ooit andere draden in dit forum ?

De meest gemaakte opmerking is daar: vermijd het gebruik van 'select' en 'activate' in VBA.
En de volgende: bewerk (=schoon op) de code van de macrorecorder voordat je hem verder gebruikt.
 
snb ,


Code:
 Workbooks("2017-23").Sheets("Offerte").Range("B5:B7").Copy      'deze werkt


Code:
Workbooks("Factureren.xlsm").Activate
    Sheets("Factuur").Select
    Range("B5").Select
    ActiveSheet.Paste

samen voegen tot

Code:
Workbooks("Factureren.xlsm").Sheets("Factuur").Range("B5").Paste  'deze werkt niet
 
Code:
Workbooks("2017-23").Sheets("Offerte").Range("B5:B7").Copy Workbooks("Factureren.xlsm").Sheets("Factuur").Range("B5")
werkt
Code:
Workbooks("Factureren.xlsm").Sheets("Factuur").Range("B5:B7")=Workbooks("2017-23").Sheets("Offerte").Range("B5:B7").value
werkt ook
Code:
sn=Workbooks("2017-23").Sheets("Offerte").Range("B5:B7")
Workbooks("Factureren.xlsm").Sheets("Factuur").Range("B5:B7")=sn
werkt ook
 
Laatst bewerkt:
Weer wat geleerd.
Wist niet dat je achter Copy meteen de bestemming kon plaatsen.
Alle select --paste en activate zijn verwijderd en het werkt prima

Alleen als ik "2017-25" wijzig in "Naam1" , dan werkt het nog steeds niet.
Foutmelding: "Fout9 , Subscript valt buiten bereik"

Is dit nog op te lossen?

Jaap

Code:
Sub Factuur_maken()

    Application.ScreenUpdating = False
    Sheets("Offerte beheer").Select
    
Dim Naam1 As String
    Naam1 = Range("D" & Range("L1")).Value
    
10  Workbooks.Open Filename:="C:\Users\Gebruiker\Documents" & "\" & Naam1 & ".xlsm"
  
    Range("A18:F27").Copy Workbooks("Factureren.xlsm").Sheets("Factuur").Range("A18")
    Application.CutCopyMode = False
    
20  Workbooks("2017-25").Sheets("Offerte").Range("B5:B7").Copy _
    Workbooks("Factureren.xlsm").Sheets("Factuur").Range("B5")
    Application.CutCopyMode = False
    
30  Workbooks("2017-25").Sheets("Offerte").Range("G30").Copy _
    Workbooks("Factureren.xlsm").Sheets("Factuur").Range("G30")
    
40  Workbooks("2017-25").Sheets("Offerte").Range("D15").Copy _
    Workbooks("Factureren.xlsm").Sheets("Factuur").Range("D15")
    
    Application.CutCopyMode = False
50  Workbooks("2017-25.xlsm").Close False
    Sheets("Offerte beheer").Select
    Application.ScreenUpdating = True
End Sub
 
Heb jij dan een werkboek met de naam "Naam1" ?

Ik zie nog steeds overbodige 'Select' 's in de code staan.
 
snb,

"Naam1" is mijn variabele welke gehaald word uit een lijst van uitgebrachte offertes
maar

Ik heb blokje 20 gewijzigd zie onderstaande code en nu werkt het zowaar
Als je de betreffende offerte al geopend heb , dan is het zeker een fout om hem weer helemaal te beschrijven


Code:
20  Workbooks("2017-25").Sheets("Offerte").Range("B5:B7").Copy _
    Workbooks("Factureren.xlsm").Sheets("Factuur").Range("B5")
    Application.CutCopyMode = False

gewijzigd in

Code:
20  Range("B5:B7").Copy Workbooks("Factureren.xlsm").Sheets("Factuur").Range("B5")
       Application.CutCopyMode = False

Iedereen bedankt voor de hulp.
Probleem is opgelost

Vriendelijke groet, Jaap
 
Als naam1 een variabele is, schrijf je hem in VBa als naam1 en nooit als "naam1".
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan