Kolom in excel defineren met naam en verwijzen in VBA

Status
Niet open voor verdere reacties.

gast0667

Gebruiker
Lid geworden
20 dec 2007
Berichten
136
Help.

Ben al een tijdje bezig met het volgende probleem: :(
In VBA heb ik de naam 'Regelnummer' kunnen koppelen aan een door de gebruiker in te vullen regel in EXCEL (bijvoorbeeld regel 5).

Nu wil ik dat VBA in één cel van een bereik [D1:D10] (bijvoorbeeld cel D5 (op regel 5)) een WAARDE invult.

De code die nu alleen werkt is:
Worksheets(1).Range("D" + CStr(Regelnummer)).Value = WAARDE

d.m.v. deze code wordt in cel D5 de WAARDE ingevuld.
Echter wanneer ik nu een kolom toevoeg in EXCEL voor de D-kolom. (waardoor D --> E wordt) klopt bovenstaande code niet meer (deze moet ik nu wijzigen in E, oftewel ik ben dan verplicht om de volledige VBA-code te doorlopen om kolom D in kolom E te veranderen. Om dit de voorkomen en op te lossen heb ik het volgende bedacht:

In EXCEL heb ik een bereik [D1:D10] gedefineerd met naam 'Omschrijving'. Wanneer ik nu een kolom voor de D-kolom invoeg veranderd EXCEL de gedefineerde naam naar de E-kolom.

De code zou nu moeten zijn:
Worksheets(1).Range(Omschrijving + CStr(Regelnummer)).Value = WAARDE

Mara nu geeft hij aan dat 'Omschrijving' leeg is. En hij vult dus geen waarde in.
Wie kan mij hierin helpen of aangeven hoe ik VBA zover kan krijgen dat hij een gedefineerde naam, zoals 'Omschrijving', kan zien als een kolom ????? :(
 
Zoiets

Code:
Sheets(1).Cells(Regelnummer, Range("Omschrijving").Cells(1).Column).Value = WAARDE

Wigi
 
Worksheets("Mapoverzicht").Cells(SelectBonRij, Range("KOmschrijving").Cells(1).Column).Value = Response2

Geeft een fout aan.

"Mapoverzicht" = de eerste werkblad.
"SelectBonRij" = de regel van dat werkblad (VBA geeft aan 10)
"KOmschrijving" = bereik (=Mapoverzicht!$D$8:$D$29) in excel
"Response2" = de waarde die ingevuld dient te worden in cel D10

HELP.
 
Response2 is wel degelijk een variabele en geen stuk tekst?
 
Response2 heeft de tekst waarde van een cel in werkblad 2 en kan eventueel aangepast worden d.m.v. een invoerveld van de gebruiker.

Het is geen variable (wordt niet gedimd)
 
hang eens een simpel voorbeelbestandje bij, met mijn code er al in.
 
Laatst bewerkt door een moderator:
Dit is de code:
Private Sub CommandButton1_Click()

BonNr = [D14]
BonOmschr = [D16]

'Zoek regelnummer in 'Map'.
With Worksheets("Map").Range("A6:A15") 'Geeft bereik in werkblad
Set c = .Find(BonNr, LookIn:=xlValues) 'Zoek bonnummer in bereik
If Not c Is Nothing Then 'Bonnummer is gevonden
SelectBonRij = c.Row 'Bonnummer is rij
ActiveSheet.Name = BonNr 'Wijzig naam werkblad naar bonnummer
Worksheets("Map").Select 'Activeer werkblad
Worksheets("Map").Rows(SelectBonRij).Select 'Selecteer rij behorende bij bonnummer

'Toon bericht "Omschrijving werkzaamheden"
Dim Msg, Title, Default, Omschr, Response
Msg = "Geef bon omschrijving."
Title = "Omschrijving werkzaamheden."
Default = BonOmschr
Response = InputBox(Msg, Title, Default)

'Invullen van waarden van bon in overzicht
'1)Deze werkt.
'Worksheets("Map").Range("C" + CStr(SelectBonRij)).Value = BonOmschr

'2)Zoiets wil ik.
Worksheets("Map").Cells(SelectBonRij, Range("KOmschr").Cells(1).Column).Value = Response
End If
End With

'Reset variabelen
BonNr = Empty
BonOmschr = Empty

End Sub

Een overzicht van de 2 Excel-werkbladen is bijgevoegd in Paint-formaat.
 
Een overzicht van de 2 Excel-werkbladen is bijgevoegd in Paint-formaat.

Toch niet, maar laat dat maar. Voeg een gezipte versie van het Excel bestand bij, dan zal je het snelste antwoord krijgen.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan