Ejecutar macro sin afectar otras celdas
Hola, he creado un macro el cual se ejecuta al cambiar un valor de Celda, el macro lo que hace es leer los datos de un archivo de texto . En este archivo de texto guardo datos de unos artículos, en la columna 1 del archivo de texto guardo el nombre de los artículos, en la colmna 2 la cantidad de artículos.
En el rango "A1" pongo un articulo, al momento de yo escribir un valor por en B1 se ejecuta el macro y me pone un resultado en B2, si yo ingreso un dato en "C1" se ejecuta el macro y pone un resultado en C2, ahora el problema que tengo es que si yo cambio el valor de "A1" e ingreso un Valor en "D1" los datos que anteriormente estaban en B2 y C2 son cambiados y es lo que yo no quiero, necesito que los datos ya ingresados no sean cambiados.
Gracias por su ayuda.
Sub leer_fichero_de_texto()
On Error Resume Next
Dim Tabulacion As String
Dim Tabulacion2 As Long
Dim Resultado As Long
Application.ScreenUpdating = False
fichero_de_texto = "Prueba.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
ruta = ActiveWorkbook.Path
Set archivo = fso.OpenTextFile(ruta & "\" & fichero_de_texto, 1)
contenido = archivo.readall
archivo.Close
Set fso = Nothing
Set archivo = Nothing
contenido = Split(contenido, vbCrLf)
For i = 0 To UBound(contenido)
Tabulacion = contenido(i)
Tabulacion = Trim(Mid(contenido(i), 1, 8))
Tabulacion2 = Trim(Mid(contenido(i), 11, 4))
If Range("A1") = Tabulacion Then
Tabulacion = Tabulacion
If Target.Address = "$B$1" Then
Resultado = Tabulacion2 * Range("B1")
Range("B2") = Resultado
End If
If Target.Address = "$C$1" Then
Resultado = Tabulacion2 * Range("C1")
Range("C2") = Resultado
End If
If Target.Address = "$D$1" Then
Resultado = Tabulacion2 * Range("D1")
Range("D2") = Resultado
End If
End If
Next
Application.ScreenUpdating = True
======================
LO SIG LO PONGO EN LA HOJA1
=======================
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then leer_fichero_de_texto
If Target.Address = "$C$1" Then leer_fichero_de_texto
If Target.Address = "$D$1" Then leer_fichero_de_texto
End Sub
========================
"DATOS EN ARCHIVO DE TEXTO
======================
Articulo Cantidad
M2150M1A 250
M27Q2M1A 251
M2752M1A 239
En el rango "A1" pongo un articulo, al momento de yo escribir un valor por en B1 se ejecuta el macro y me pone un resultado en B2, si yo ingreso un dato en "C1" se ejecuta el macro y pone un resultado en C2, ahora el problema que tengo es que si yo cambio el valor de "A1" e ingreso un Valor en "D1" los datos que anteriormente estaban en B2 y C2 son cambiados y es lo que yo no quiero, necesito que los datos ya ingresados no sean cambiados.
Gracias por su ayuda.
Sub leer_fichero_de_texto()
On Error Resume Next
Dim Tabulacion As String
Dim Tabulacion2 As Long
Dim Resultado As Long
Application.ScreenUpdating = False
fichero_de_texto = "Prueba.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
ruta = ActiveWorkbook.Path
Set archivo = fso.OpenTextFile(ruta & "\" & fichero_de_texto, 1)
contenido = archivo.readall
archivo.Close
Set fso = Nothing
Set archivo = Nothing
contenido = Split(contenido, vbCrLf)
For i = 0 To UBound(contenido)
Tabulacion = contenido(i)
Tabulacion = Trim(Mid(contenido(i), 1, 8))
Tabulacion2 = Trim(Mid(contenido(i), 11, 4))
If Range("A1") = Tabulacion Then
Tabulacion = Tabulacion
If Target.Address = "$B$1" Then
Resultado = Tabulacion2 * Range("B1")
Range("B2") = Resultado
End If
If Target.Address = "$C$1" Then
Resultado = Tabulacion2 * Range("C1")
Range("C2") = Resultado
End If
If Target.Address = "$D$1" Then
Resultado = Tabulacion2 * Range("D1")
Range("D2") = Resultado
End If
End If
Next
Application.ScreenUpdating = True
======================
LO SIG LO PONGO EN LA HOJA1
=======================
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then leer_fichero_de_texto
If Target.Address = "$C$1" Then leer_fichero_de_texto
If Target.Address = "$D$1" Then leer_fichero_de_texto
End Sub
========================
"DATOS EN ARCHIVO DE TEXTO
======================
Articulo Cantidad
M2150M1A 250
M27Q2M1A 251
M2752M1A 239
1 Respuesta
Respuesta de Elsa Matilde
1