stavo cercando di continuare ad esercitarmi con le macro ma purtroppo sono rimasto nuovamente impigliato
La mia intenzione era quella di aggiungere una macro ad una tabella di inserimento dati.
La macro della Tabella di inserimento dati è perfettamente funzionante, ma dopo averne aggiunto un'altra non funziona più.
Anche la seconda macro che ho aggiunto funziona.
In pratica la prima macro:
Codice: Seleziona tutto
sub copia
Doc = ThisComponent
Sheet = Doc.Sheets.getByName("data_entry")
Sheet1 = Doc.Sheets.getByName("Inserimento_dati")
mode = Sheet.getCellRangeByName("C4").string
allert = Sheet.getCellRangeByName("N4").string
Range0 = Sheet.getCellRangeByName("F6")
Range1 = Sheet.getCellRangeByName("F8")
Range2 = Sheet.getCellRangeByName("J8")
Range3 = Sheet.getCellRangeByName("F10")
Range4 = Sheet.getCellRangeByName("J10")
Range5 = Sheet.getCellRangeByName("F12")
ranges = Array(range0,range1, range2, range3, range4, range5)
for i = 0 to 5
If ranges(i).string="" then
Doc.CurrentController.Select(ranges(i))
'ranges(i).CellBackColor = qbcolor(9)
msgbox "CAMPO VUOTO " & rangeTextAddress(ranges(i),Sheet)
exit sub
'Else
'ranges(i).CellBackColor = RGB(240,255,240)
end if
next i
c = Sheet1.createCursor
c.gotoEndOfUsedArea(false)
LastRow = c.RangeAddress.EndRow + 2
If mode = "RECORD" And Sheet.getCellRangeByName("N4").string = "" then
Sheet.getCellRangeByName("T35:AJ35").setDataArray(Sheet.getCellRangeByName("T33:AJ33").getDataArray)
Range = Sheet.getCellRangeByName("T35:AJ35").getRangeAddress()
CellAddress = Sheet1.getCellRangeByName("C" & Lastrow).CellAddress
Sheet.copyRange(CellAddress, Range)
Else
msgbox allert
'oppure per aumentare condizioni usare al posto di Else
'Elseif ... = "..." And ....... = "..." then
End if
'Sheet.getCellRangeByName("F6:F16").ClearContents(7)
'Sheet.getCellRangeByName("J8:J16").ClearContents(7)
'Sheet.getCellRangeByName("F22:F22").ClearContents(7)
End Sub
Sub Campo_data(oEv)
Dim oCell As Object
oCell = thisComponent.Sheets.getByName("data_entry").getCellRangeByname(oEv.Source.Model.Name)
oCell.FormulaLocal = oEv.Source.getText()
End Sub
Function rangeTextAddress(rng as object, SH as object) as string
Dim Doc As Object, Sheet As Object, CellRange As Object
RngAddr=Rng.getRangeAddress
RngColumn=Rng.Columns
FirstCol=RngColumn.getByIndex(0).getName
FirstRow=RngAddr.StartRow+1
FCol=RngAddr.StartColumn-2
FRow=RngAddr.StartRow
'rangeTextAddress = FirstCol + FirstRow + " (" + sh.GetCellbyPosition(FCol,FRow).String + + ")"
rangeTextAddress = sh.GetCellbyPosition(FCol,FRow).String
End Function
poi però essendo una tabella con funzione di inserimento e ricerca dati (successivamente anche di modifica) ho aggiunto quest'altra, associata a evento foglio contenuto modificato:
Codice: Seleziona tutto
Sub RicercaEmodifica
Dim Doc As Object, Sh As Object
Dim LastRow As Long
Doc = ThisComponent
Sh = Doc.Sheets.getByName("data_entry")
mode1 = Sh.getCellRangeByName("C4").string
allert1 = Sh.getCellRangeByName("N6").string
If mode1 = "RICERCA E MODIFICA" <> "" then
Sh.getCellByPosition(5, 5).String = Sh.getCellRangeByName("U44").String
Sh.getCellByPosition(5, 7).String = Sh.getCellRangeByName("V44").String
Sh.getCellByPosition(9, 7).String = Sh.getCellRangeByName("X44").String
Sh.getCellByPosition(5, 9).String = Sh.getCellRangeByName("Y44").String
Sh.getCellByPosition(9, 9).String = Sh.getCellRangeByName("AA44").String
Sh.getCellByPosition(5, 11).String = Sh.getCellRangeByName("AB44").String
Sh.getCellByPosition(9, 11).String = Sh.getCellRangeByName("AC44").String
Sh.getCellByPosition(5, 13).String = Sh.getCellRangeByName("AD44").String
Sh.getCellByPosition(9, 13).String = Sh.getCellRangeByName("AE44").String
Sh.getCellByPosition(5, 15).String = Sh.getCellRangeByName("AF44").String
Sh.getCellByPosition(9, 15).String = Sh.getCellRangeByName("AG44").String
Else
'msgbox allert1
Exit Sub
End if
End Sub
Mi dareste una mano a capire?
Allego file