lunedì 24 novembre 2014

Funzione Asc(String) per ricavare il codice ascii di un carattere.

Adesso troviamo il modo di ricavare il codice ASCII di un carattere...

Facile:
Sub ascii()
    MsgBox Asc("A")
End Sub
che restituisce 65.
Ricordo che il codice ASCII esadecimale di A era 41H, che appunto corrisponde a 65 decimale.

domenica 23 novembre 2014

Codice per individuare il numero di protocollo più alto fra le varie occorrenze di una singola persona nel database.

...e ho buttato giù il codice per selezionare il numero di protocollo più alto fra le varie occorrenze di una stessa persona.
Ecco il foglio con un ipotetico numero di protocollo sulla colonna A:



Ed ecco il codice:
Sub main()
    Dim indirizzo As String
    Dim numero As Long
    Set c = Cells.Find("antonio cacchioni")
    If c Is Nothing = False Then
        indirizzo = c.Address
        Do
        Set c = Cells.FindNext(c)
        
        If Cells(c.Row, c.Column + 1).Formula = "56" And Cells(c.Row, c.Column - 1).Formula > numero _
            Then numero = Cells(c.Row, c.Column - 1).Formula
        Loop While c.Address <> indirizzo
    End If
    MsgBox numero
End Sub
Risultato:



Okay! Funziona!

Ripasso metodi Find e FindNext di un oggetto Range in Excel

Ecco... riprendo confidenza con i metodi Find e FindNext dell'oggetto Range.

Mi creo un foglio di lavoro con dei nomi di fantasia e delle età...



Ed ecco il codice:
Sub main()
    Dim indirizzo As String
    Set c = Cells.Find("antonio cacchioni")
    If c Is Nothing = False Then
        indirizzo = c.Address
        Do
        Set c = Cells.FindNext(c)
        c.Interior.Color = vbCyan
        Loop While c.Address <> indirizzo
    End If
End Sub
Il FindNext, una volta trovato l'ultimo indirizzo, ricomincia daccapo.
Per questo è importante interrompere il Loop quando l'indirizzo del range trovato coincide con l'indirizzo iniziale.

Ed ecco il codice eseguito, con la colorazione in celeste di tutte le occorrenze del nome prescelto:

martedì 18 novembre 2014

Risolto problema dell'amministrativo della ASL per i compensi orari, con il formato delle celle tipo "ora".

La formula che ho inserito nella cella "Compenso orario" è =F5*60, ossia moltiplica per 60 il valore contenuto nella cella F5.
Così, se in F5 ho 1.5 il risultato nella cella "Compenso orario" è 90.
Se in F5 ho 2, il risultato della cella "Compenso orario" è 120.

Lapalissiano!

Il problema è se il formato di F5 è formato ora e non generico

Ho conferito a F5 il formato "ora", e se inserisco 1:00, nella casella Compenso Orario ottengo adesso 2,50.
Perché?

Proviamo ancora con altri valori...

Con 2:00 ottengo 5,00.
Con 3:00 ottengo 7,50 (me l'aspettavo!)

Perché? Mi sembra ovvio che la cella Compenso Orario non moltiplichi 60 per 1, 2 o 3, ma per altri numeri.
Riconvertendo il formato di F5 con il numero scritto dentro, vediamo a cosa corrisponde quel numero in formato generico...

1:00 ---> 0,0416666666666667
2:00 ---> 0,0833333333333333
3:00 ---> 0,125
Googliamo con questi valori.


Nella cella in formato Ora è rappresentato il numero di ore, ma in realtà il valore della cella è pari al numero di giorni che entrano in quel numero di ore, ossia numero di ore / 24.
Quando si moltiplica dunque, nella cella Compenso Orario 60 per il valore della cella, non lo si moltiplica per il numero di ore rappresentato, ma per il numero di giorni compreso in quelle ore.
Per ottenere il valore reale, bisogna moltiplicare per 24 il prodotto di 60 per il valore della cella.

sabato 15 novembre 2014

OpenGL, cmake, primi passi.

Che accidenti è CMake?
L'ho scaricato e ora lo sto decomprimendo.

Per intanto mi vado a fumare una sigaretta...
Non so come manipolarlo avendo scaricato la versione compressa... Fammi un po' scaricare l'exe...

Bene. Adesso si sta installando, pare...

PATH too long???

Boh? Semmai ce lo installo io poi...

Ecco, installato col collegamento al desktop.
Ecco quello che mi appare, adesso:



...e vediamo come accidenti si usa!

venerdì 7 novembre 2014

Il programma di mio figlio Daniele

Daniele sta costruendo un programma in Java.
Ecco il codice:
package supercraftdemo;

import java.applet.*;

public class Component extends Applet implements runnable{
    private static final long serialVersionUID = 1L;
    private static int pixelSize = 2;
    public static Dimension size = new Dimension(700,560);
    public static Dimension pixel = new Dimension(size.width / pixelSize, size.height / pixelSize);
    
    public static String name = "supercraft";
    
    public static boolean isRunning = false;
    
    private image screen;
    
    public static Level level;
    
 public Component(){
     setPreferedSize(size);
     

 }

 public void start(){
  //definire oggetti
  level = new Level();
  
  //inizio loop del gioco
  isrunning = true;
  new trhead(this).start();
 }
 
 public void stop (){
  isRunning = false;
 }
 
 public static void main(String args []) {
               Component  component = new Component();
               
               JFrame = new JFrame();
}

giovedì 6 novembre 2014

Esercizio sui nomi dei campi in Excel con VBA

Codice per definire i nomi dei campi in Excel con VBA(esercizio):
Sub main()
Cells.Select
Selection.Interior.Color = vbWhite
On Error Resume Next
ActiveWorkbook.Names("mioCampo").Delete
num = 1 + Int(Rnd() * 10)
num2 = 1 + Int(Rnd() * 10)
ActiveWorkbook.Names.Add Name:="mioCampo", RefersTo:=Range(Cells(1, 1), Cells(num2, num))
Range("miocampo").Interior.Color = vbRed
Range("A1").Select
End Sub