Eventos de uno en uno
Publicado por Bruno (4 intervenciones) el 01/11/2007 23:41:33
Hola a todos,
Acabo de descubrir los eventos de VB para excel, y me estoy encontrando con algún que otro problema que supongo que no tiene que ser muy complicado de resolver.
He generado un código que, en función del campo que de un desplegable de validación, ejecuta una macro u otra macro.
El código es algo así.
El problema es que, al intentar hacer esto con otra validación que tengo en la misma hoja, me repite
Private Sub Worksheet_Change(ByVal Target As Range)
Dim VRange As Range
Set VRange = Range("c7")
If Intersect(VRange, Target) Is Nothing Then
Exit Sub
End If
If [c7] = "" Then
Call Macro1
Range("c7").Select
End If
If [c7] = "SÍ" Then
Call Macro2
Range("c7").Select
End If
If [c7] = "NO" Then
Call Mostrar_Sin_BaseSiete
Range("c29").Value = ""
Range("c31").Value = ""
Range("c33").Value = ""
Range("c35").Value = ""
Range("c37").Value = ""
Range("c39").Value = ""
Range("c41").Value = ""
Range("c29").Select
End If
If [c43] = "PVP" Then
Range("C45") = _
"=IF(OR(R43C3="""",R9C3="""",ISERROR(VLOOKUP(R9C3,BASESIETE!C1,1,0))),"""",IF(R43C3=""PVP"",VLOOKUP(R9C3,BASESIETE!C1:C57,8,0),IF(R43C3=""VFF"",VLOOKUP(R9C3,BASESIETE!C1:C57,55,0),""ERR"")))"
Range("C45").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("c47").Select
End If
If [c43] = "VFF" Then
Range("C45") = _
"=IF(OR(R43C3="""",R9C3="""",ISERROR(VLOOKUP(R9C3,BASESIETE!C1,1,0))),"""",IF(R43C3=""PVP"",VLOOKUP(R9C3,BASESIETE!C1:C57,8,0),IF(R43C3=""VFF"",VLOOKUP(R9C3,BASESIETE!C1:C57,55,0),""ERR"")))"
Range("C45").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("c47").Select
End If
If [c43] = "" Then
Range("C45") = _
"=IF(OR(R43C3="""",R9C3="""",ISERROR(VLOOKUP(R9C3,BASESIETE!C1,1,0))),"""",IF(R43C3=""PVP"",VLOOKUP(R9C3,BASESIETE!C1:C57,8,0),IF(R43C3=""VFF"",VLOOKUP(R9C3,BASESIETE!C1:C57,55,0),""ERR"")))"
Range("C45").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("c47").Select
End If
End Sub
Acabo de descubrir los eventos de VB para excel, y me estoy encontrando con algún que otro problema que supongo que no tiene que ser muy complicado de resolver.
He generado un código que, en función del campo que de un desplegable de validación, ejecuta una macro u otra macro.
El código es algo así.
El problema es que, al intentar hacer esto con otra validación que tengo en la misma hoja, me repite
Private Sub Worksheet_Change(ByVal Target As Range)
Dim VRange As Range
Set VRange = Range("c7")
If Intersect(VRange, Target) Is Nothing Then
Exit Sub
End If
If [c7] = "" Then
Call Macro1
Range("c7").Select
End If
If [c7] = "SÍ" Then
Call Macro2
Range("c7").Select
End If
If [c7] = "NO" Then
Call Mostrar_Sin_BaseSiete
Range("c29").Value = ""
Range("c31").Value = ""
Range("c33").Value = ""
Range("c35").Value = ""
Range("c37").Value = ""
Range("c39").Value = ""
Range("c41").Value = ""
Range("c29").Select
End If
If [c43] = "PVP" Then
Range("C45") = _
"=IF(OR(R43C3="""",R9C3="""",ISERROR(VLOOKUP(R9C3,BASESIETE!C1,1,0))),"""",IF(R43C3=""PVP"",VLOOKUP(R9C3,BASESIETE!C1:C57,8,0),IF(R43C3=""VFF"",VLOOKUP(R9C3,BASESIETE!C1:C57,55,0),""ERR"")))"
Range("C45").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("c47").Select
End If
If [c43] = "VFF" Then
Range("C45") = _
"=IF(OR(R43C3="""",R9C3="""",ISERROR(VLOOKUP(R9C3,BASESIETE!C1,1,0))),"""",IF(R43C3=""PVP"",VLOOKUP(R9C3,BASESIETE!C1:C57,8,0),IF(R43C3=""VFF"",VLOOKUP(R9C3,BASESIETE!C1:C57,55,0),""ERR"")))"
Range("C45").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("c47").Select
End If
If [c43] = "" Then
Range("C45") = _
"=IF(OR(R43C3="""",R9C3="""",ISERROR(VLOOKUP(R9C3,BASESIETE!C1,1,0))),"""",IF(R43C3=""PVP"",VLOOKUP(R9C3,BASESIETE!C1:C57,8,0),IF(R43C3=""VFF"",VLOOKUP(R9C3,BASESIETE!C1:C57,55,0),""ERR"")))"
Range("C45").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("c47").Select
End If
End Sub
Valora esta pregunta


0