giovedì 16 aprile 2009

Macro per formule automatiche su riga

Lo scopo di questo post è spiegare come inserire una riga di formule in vba in excel.
questo può venire applicato per ad esempio creare una serie di righe contenenti ad esempio formule e valori ripetute per n righe secondo un criterio stabilito o proveniente dalle elaborazioni...
le funzioni da utilizzare sono:

  • ActiveCell.Offset(rowOffset:="spostamento righe",columnOffset:="spostamento colonne").select
    questo comando serve per rendedre attiva una cella dando lo spostamento dalla corrente
  • ActiveCell.FormulaR1C1 = "=R[-1]C+1"
    questo comando serve per inserire una formula in luguaggio magro utilizzando il riferimento riga colonna per le celle
  • ActiveCell.FormulaR1C1Local = "=somma(r[1]c:r[4]c)
    questo comando a differenza del presente utilizza il linguaggio excel con i riferimenti riga colonna
Un esempio dell'utilizzo delle precedenti formule in un foglio dove si calcola il piano di ammortamento di un mutuo.

ActiveCell.FormulaR1C1 = "=R[-1]C+1"
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select
ActiveCell.FormulaR1C1Local = "=ASS(RATA(rc[6]/r6c2;r7c2--R[-1]C[-1];R[-1]C[5]))+RC[1]"
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select
ActiveCell.FormulaR1C1Local = "0"
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select
ActiveCell.FormulaR1C1Local = "=R[-1]C[3]*(RC[4]/R6C2)"
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select
ActiveCell.FormulaR1C1 = "=RC[4]-RC[-1]"
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select
ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-1]"
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select
ActiveCell.FormulaR1C1 = "=R[-1]C-RC[-2]"
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select
ActiveCell.FormulaR1C1 = "=R[-1]C"
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select
ActiveCell.FormulaR1C1 = "=R[-1]C"

venerdì 10 aprile 2009

Aprire una form"figlia"

Per aprire una form figlia per esempio da un menu il codice è il seguente:

Dim frm As New <nome form>
frm.MdiParent = Me
frm.Show()

se invece dopo la realizzazione della form si volesse inserila in un contenitore TabControl
dopo aver impostato la proprietà FormBorderStyle dei vari form che devono essere inclusi a None si deve lavorare da codice, non con l'editor di WF... inserire nel costruttore del form che contiene il TabControl codice di questo genere:

Dim frm As New Form3 'o come si chiama il form da inserire nella
prima TabPage
frm.TopLevel = False
frm.Visible = True
TabPage1.Controls.Add(frm) 'o come si chiama la prima TabPage
frm = New Form4 'o come si chiama il form da inserire nella
seconda TabPage
frm.TopLevel = False
frm.Visible = True
TabPage2.Controls.Add(frm) 'o come si chiama la seconda TabPage
'eccetera

Eventualmente, se i form dovessero risultare più grandi delle TabPages, impostare la proprietà AutoScroll delle varie TabPages a True perché si possano scorrere.

Creare finestre Mdi vb.net 2008

Per creare una struttura di finestre "Padre - Figlio" innanzitutto si deve aggiungere al progetto una nuova form MDI andando su Esplora Soluzioni tasto destro sul nome del progetto selezionare aggiungi e poi Windows Form... . Nella finstra che si presenta selezionare Form Padre MDI" impostarne il nome (molto importante) e il gioco è fatto.
Se invece la form padre fosse già stata creata impaginata, per evitare di dover rifare tutto il lavoro e sufficiente andare nelle prorietà della form e impostare a true la proprietà IsMdiContainer.

Iniziamo questo viaggio

Questo blog è una raccolta delle procedure informatiche relative a vari programmi che utilizzo, che raccolgo dopo ricerche in internet e forum e per potermene ricordare per un successivo utilizzo.A volte sono cose basilari ma preferisco scriverle così le ricordo...