Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Una rutina de 5ª Generacion. Toma decisiones propias.

Estas en el tema de Una rutina de 5ª Generacion. Toma decisiones propias. en el foro de Visual Basic clásico en Foros del Web. Muy buenos dias/buenas tardes/noches. Es mi primera pregunta, asi que gracias a todos por leerlo, se que quien pueda ayudara. Os copio una sentencia que ...
  #1 (permalink)  
Antiguo 25/09/2008, 13:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Una rutina de 5ª Generacion. Toma decisiones propias.

Muy buenos dias/buenas tardes/noches.

Es mi primera pregunta, asi que gracias a todos por leerlo, se que quien pueda ayudara.

Os copio una sentencia que me tiene loco y ya no se por donde seguir.
__________________________________________________ _____________
Sub BuscarTextoEnLibro()

Dim MiWord As String, FirstFind As String, MiMsg As String
Dim MiCell As Range, MiRangoActivo As String

MiWord = InputBox("Artículo a Buscar"): If MiWord = "" Then Exit Sub
MiRangoActivo = Selection.Address(External:=True)

For Each MiSheet In ThisWorkbook.Sheets
FirstFind = ""
Do
If FirstFind = "" Then
Set MiCell = MiSheet.Cells.Find(What:=MiWord, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False)
If MiCell Is Nothing Then GoTo S02
FirstFind = MiCell.Address
Else
Set MiCell = MiSheet.Cells.FindNext(MiCell)
If MiCell.Address = FirstFind Then GoTo S02
End If

Application.Goto MiCell
MiMsg = "El Artículo se encuentra en la hoja """ & ActiveSheet.Name & """." & _
Chr(10) & Chr(10) & "¿ Continuar buscando ?"

If MsgBox(MiMsg, vbYesNo, "Localizado texto: """ & MiWord & """") = 7 Then
Set MiCell = Nothing
Exit Sub
End If

Loop

S02:
Next MiSheet

Application.Goto Range(MiRangoActivo)
Set MiCell = Nothing
End Sub
__________________________________________________ _________

Esto lo he copiado de internet, yo no tengo ese nivel ni por asomo.
La macro funciona, pero cuando ella decide.
Busco palabra o parte de palabras y va de muerte, pero en ocasiones da un fallo, cual?:

Se ha producido el error "91" en tiempo de ejecucion:
Variable de objeto o bloque With no establecido

y en el visual basic se queda parado en la sentencia:
If MiCell.Address = FirstFind Then

Despues de romperme los cuernos he conseguido ver, que falla, solo cuando tengo dos o mas celdas conalineacion combinar celdas. Hasta aqui casi bien. Pero Sigo.

No siempre, solo algunas veces lo hace, osea que busco una palabra que esta en una casilla alineada con otra y no falla, pero en la de al lado con otra palabra si.

He intercambiado formatos, palabras etc, y no encuento el orden, pero por ejemplo en la celda A1 siempre funciona da igual lo que ponga pero en por ejemplo la celda a1 de otra hoja unas palabras funcionan y otras no. No me ceeis, yo tampo, he tirado la toaya, si alquien quiere la hoja se la paso.

Gracias y perdonar la barrila.
  #2 (permalink)  
Antiguo 25/09/2008, 13:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Eso ocurre porque al llamar a FindNext no se encuentra el valor buscado, para que no ocurra coloca esta línea justo antes de la que te da error:
Código vb:
Ver original
  1. If MiCell Is Nothing Then GoTo S02
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 25/09/2008, 13:59
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Joder, David el Grande, se te queda pequeño el adjetivo. Macho "Chapo" a la primera.
Claro que esta es la diferencia entre saber y no saber.

Oye no se si puedes por aqui, pero, me gusta mucho urgar en estos temas, hago una hojas y macros (automaticas) que la gente se queda con la boca abierta, y no tengo ni idea. Quiero aprender, me he comnrpado dos libros de visual basic, esos de anaya de iniciacion a la programacion en Visual, yo solo tengo nociones de cuando era al basic solo (tengo mis añitos, como veras), podrias aconsejarme por donde o como empezar? Lo que me digas sera como mi credo.

Gracias, no te imaginas lo que me voy a tirar el rollete con esta hoja de calculo. Voy a seguir mejorandola, ya te preguntare.
  #4 (permalink)  
Antiguo 25/09/2008, 14:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

No sé, yo no conozco mucho de manuales sobre el tema. Pero te comento que sabiendo lo básico la mejor forma de aprender es leyendo código hecho por terceros.

P.S.: Mi mejor profesor: Google. Y cualquier duda que tengas estamos por acá.

P.S.2: ¿Eres de la época del QBasic como yo? .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 25/09/2008, 14:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Oye no me llames abuson anda, mira, tengo que rellenar esta macro

Private Sub CheckBox1_Click()

End Sub

Osea entera, quiero que cuando pincho en la caja en una casilla escriba un numero, por ejemplo 1,16 y cuando lo despincho, que ponga 1,00.

NONONO, soy del basic del primero, del que corria en msdos. Y si estoy aprendiendo leyendo rutinas, pero algunas se me atascan, no entiendo algunos bucles, pero te prometo que sera el google mi primer libro.
  #6 (permalink)  
Antiguo 25/09/2008, 14:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

¿Y dónde debe escribirse ese número? .

P.S.: QBasic se ejecutaba en MS-DOS .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 25/09/2008, 14:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Tengo una tarifa de precios (que si quieres te envio) me vale cualquier casilla, pero si se te ocurre como hacerlo en plan "profesional" te comento.

La casilla es para que si la lista de precios la quieres con IVA (estoy en España), multiplique todos los precios (son 800 esparramados en 8 hojas), por 1,16 y si no esta seleccionada que deje los precios netos sin impuestos.

Habia pensado que siempre fuera la misma casilla, yo multiplico los precios por esa casilla, si es uno, quedara igual, si es 1,16 es lo mismo que subirle un 16% de impuestos.

Luego quiero hacer lo mismo pero para que los rededonde a decimales por ejemplo multiplos de 0,10, para eso luego intentare habilitar otra casilla.

De todas maneras, la gente que ha visto la hoja esta encantada, porque antes no tenian nada, luego una tarifa y ahora una tarifa con precios de publico, asi no curran, y eso les gusta.
  #8 (permalink)  
Antiguo 25/09/2008, 14:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Lo único que necesitas es hacer referencia a la celda donde quieres poner el valor. Por ejemplo:
Código vb:
Ver original
  1. Worksheets("Hoja").Range("A1").Value = "Texto"
Eso escribirá Texto en la celda A1 de la Hoja "Hoja".
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 25/09/2008, 14:54
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Si pero como hago para que si esta activada, ponga un valor y si esta desactivada, ponga otro?
  #10 (permalink)  
Antiguo 25/09/2008, 15:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Puedes usar la propiedad Value del CheckBox (Es un Boolean, Verdadero cuando está seleccionado, de lo contrario es Falso).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 26/09/2008, 03:32
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Puedes escribir la rutina? Es mucho pedir, luego en casa (estoy currando) lo hago.
Gracias.
Si no puedes con lo que ya tengo voy bien, lo otro sera la version 2.1, jajajaja
  #12 (permalink)  
Antiguo 26/09/2008, 03:33
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Por cierto, ni te pregunte, tu de donde eres?
  #13 (permalink)  
Antiguo 26/09/2008, 07:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.


Código vb:
Ver original
  1. If CheckBox1.Value Then
  2.    'El CheckBox está seleccionado
  3. Else
  4.    'El CheckBox no está seleccionado
  5. End If
Soy del otro lado del océano .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 26/09/2008, 10:13
 
Fecha de Ingreso: septiembre-2008
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Esto asi solo no hace nada, yo queria que si esta activado en una casilla, me da igual cual, saliera un numero #1 por ejemplo y si no esta saliera otro numero ejemplo #2.

Oye si soy un plasta dimelo, que te dejo en paz, si no todavia te quedan 100 preguntas mas.
  #15 (permalink)  
Antiguo 26/09/2008, 10:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Una rutina de 5ª Generacion. Toma decisiones propias.

Pues sí, así es, el código lo debes completar tú, así como está no hace nada.

Donde dice "El CheckBox estás seleccionado" coloca las acciones que quieres que se realicen en caso de que así sea y en la otra parte coloca las acciones para cuando no esté seleccionado.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:14.