Al ejecutar una macro en excel se me queda colgado
Publicado por Alex (6 intervenciones) el 24/05/2006 12:36:31
Hola, pues el caso es que he creado un programilla que traduzca las celdas de una hoja que estan en ingles a español comparandolas con las de otra hoja que tine celdas en ingles con su correspondiente traduccion al español.
El caso es que si ejecuto el p`rogrma metiendo una hoja con pocas celdas a traducir, no me da ningun problema pero si le pongo 8000 filas que son las que tengo que traducir, se me keda colgao. Que puedo hacer? Os dejo el codigo del programilla pra que le echeis un vistazo
Sub Macro1()
'
' Macro1 Macro
'
'
' Acceso directo: CTRL+e
Dim lngUltimaFilahoja1, lngultimafilahoja2 As Long
Dim strObjetoBuscar, tradu As String
Dim lngResultado As Long
Dim lngColumna, lngFila, ultimacolumna, ultimacolumnahoja2 As Long
Dim lngPegarColumna, lngPegarFila As Long
Dim x, n, j, k As Integer
Dim rng As Range
'columna + fila donde empezar/terminar búsqueda
lngColumnahoja1 = 1
lngFilahoja1 = 1
lngColumnahoja2 = 1
lngFilahoja2 = 1
lngUltimaFilahoja1 = Columns(lngColumnahoja1).Range("A65536").End(xlUp).Row
Worksheets("hoja2").Activate
lngultimafilahoja2 = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
Dim intUltimaCol As Integer
If WorksheetFunction.CountA(Cells) > 0 Then
intUltimaCol = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
MsgBox intUltimaCol
End If
'columna + fila donde empezar a pegar resultados
lngPegarColumna = 1
lngPegarFila = 1
'bucle: realizar búsqueda
For k = 1 To intUltimaCol
For j = lngFilahoja2 To lngultimafilahoja2
Worksheets("hoja2").Activate
strObjetoBuscar = Cells(j, k).Text
strObjetoBuscar = LCase(strObjetoBuscar) 'minúsculas
Worksheets("hoja1").Activate
For n = lngFilahoja1 To lngUltimaFilahoja1
Worksheets("hoja1").Activate
If Cells(n, 1) = strObjetoBuscar Then
tradu = Cells(n, 2)
Worksheets("hoja2").Activate
Cells(j, k) = tradu
End If
Next n
Next j
Next k
End Sub
El caso es que si ejecuto el p`rogrma metiendo una hoja con pocas celdas a traducir, no me da ningun problema pero si le pongo 8000 filas que son las que tengo que traducir, se me keda colgao. Que puedo hacer? Os dejo el codigo del programilla pra que le echeis un vistazo
Sub Macro1()
'
' Macro1 Macro
'
'
' Acceso directo: CTRL+e
Dim lngUltimaFilahoja1, lngultimafilahoja2 As Long
Dim strObjetoBuscar, tradu As String
Dim lngResultado As Long
Dim lngColumna, lngFila, ultimacolumna, ultimacolumnahoja2 As Long
Dim lngPegarColumna, lngPegarFila As Long
Dim x, n, j, k As Integer
Dim rng As Range
'columna + fila donde empezar/terminar búsqueda
lngColumnahoja1 = 1
lngFilahoja1 = 1
lngColumnahoja2 = 1
lngFilahoja2 = 1
lngUltimaFilahoja1 = Columns(lngColumnahoja1).Range("A65536").End(xlUp).Row
Worksheets("hoja2").Activate
lngultimafilahoja2 = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
Dim intUltimaCol As Integer
If WorksheetFunction.CountA(Cells) > 0 Then
intUltimaCol = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
MsgBox intUltimaCol
End If
'columna + fila donde empezar a pegar resultados
lngPegarColumna = 1
lngPegarFila = 1
'bucle: realizar búsqueda
For k = 1 To intUltimaCol
For j = lngFilahoja2 To lngultimafilahoja2
Worksheets("hoja2").Activate
strObjetoBuscar = Cells(j, k).Text
strObjetoBuscar = LCase(strObjetoBuscar) 'minúsculas
Worksheets("hoja1").Activate
For n = lngFilahoja1 To lngUltimaFilahoja1
Worksheets("hoja1").Activate
If Cells(n, 1) = strObjetoBuscar Then
tradu = Cells(n, 2)
Worksheets("hoja2").Activate
Cells(j, k) = tradu
End If
Next n
Next j
Next k
End Sub
Valora esta pregunta


0