edcronos
-
Posts
265 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por edcronos
-
-
como eu não sabia de onde você ia rodar a macro
eu coloquei na
LISTAS DE CONTROLE (GERAL)
no modulo1
Sub Teste()' Workbooks.Open ("C:\Lista Certificados (GERAL).xlsm") With ThisWorkbook.Sheets("PT-LC-001") l = .Cells(Rows.Count, 2).End(xlUp).Row ' ultima linha com dados da planilha rane = "B6:S" & l ' monta a range Workbooks("Lista de Certificados (GERAL).xlsm").Sheets("Plan1").Range(rane).Value2 = .Range(rane).Value2 ' ActiveWorkbook.Close savechanges:=True 'salvar True End WithEnd Sub
-
-
a sua planilha está indo até a ultima linha de usada apesar de não estar preenchida
eu posso sugerir uma serie de mudanças para melhorar a performance
deixar toda a lista em uma aba sem formatação , sem formulas como banco de dados
não use tabelas do excel, apenas os dados
deixar uma aba para pesquisa e visualização do que se quer, essa sim pode se colocar as formulas e formatações, mas maneirando
essa macro é muito fácil de se fazer, mas essa sua planilha vai agarrar qualquer coisa que colocar
-
eu não sei o que é, mas tem algo estranho nessa macro e o fato de abrir o user form não funcionar
mas quando uma macro está rodando prende o funcionamento tanto da planilha quanto do vba e isso inclui o userform
mas tem coisa que pode ser melhorada
usar range completa em vez de coluna por coluna
ActiveWorkbook.Sheets("Plan1").Range("B6:K100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("B6:K100000").Value2 ActiveWorkbook.Sheets("Plan1").Range("M6:P100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("M6:P100000").Value2 ActiveWorkbook.Sheets("Plan1").Range("S6:S100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("S6:S100000").Value2
e mais uma coisa, essa macro não devia demorar tanto para atuar assim
quando você fala de uma planilha para outra você está falando de ABAS ?
ActiveWorkbook =planilha ativa
ThisWorkbook= planilha onde está a macro
no caso você está chamando a macro de outra planilha para preencher a planilha ativa com os dados dela?
se for isso, quando se executa o userfor da outra planilha a outra planilha passa a ser a ativa
para isso funcionar você tem que referenciar o nome da planilha para onde vai os dados
Workbook("nomeplanilhaNova").Sheets("Plan1").Range("B6:K100000").Value2 = ThisWorkbook.Sheets("PT-LC-001").Range("B6:K100000").Value2
assim não importa qual planilha vai estar ativa e você pode fazer a operação a partir da planilha onde tem as macro e o usefor que você quer
- 1
-
não consegui me adaptar,
tem tudo que eu não gosto,
Sub BuscaPinta(ByVal Txtvall, ByVal CorN) ' corN = wdBrightGreen Dim Ring As Range Application.ScreenUpdating = False With ActiveDocument.Range With .Find .ClearFormatting .Replacement.ClearFormatting .Text = Txtvall .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = True .Execute End With Do While .Find.Found Set Ring = .Duplicate '.Font.ColorIndex = wdAuto Options.DefaultHighlightColorIndex = CorN 'wdYellow ' .HighlightColorIndex = CorN 'wdYellow ' .End = Ring.End + 1 .Collapse wdCollapseEnd .Find.Execute Loop End With Application.ScreenUpdating = TrueEnd Sub
o write do libre office parece ser mais fácil automatizar
eu queria o wordpad, mas pelo que li não tem como fazer uma automatização nele
vou acabar usando o excel como editor de texto
-
bom dia @Patropi
é, isso de forum é um vicio,
e olha que agora também estou tentando aprender C++
apesar de eu estar mais calmo
----------------------------------------------------------
eu procurei, mas só achei coisas limitadas, mesmo esse que você postou eu já tinha visto
não sei se depois de mexer com o excel, o word parece bem limitado,
ou melhor, totalmente diferente
fiz uma macro aqui para localizar e pintar trechos de texto, como se fosse uma formatação condicional
mas por algum motivo só funcionou 2 vezes, e agora não consigo descobrir o que fiz que fez parar de funcionar
para mim servia até o word pad ou outro mais leve, mas tenho que automatizar algumas ações
-
Onde eu acho um bom tutorial de Macros para Word ?
as coisas que achei são bem limitadas
preciso de algo sobre
loop no documento,
comparar trechos,
pegar palavra,
formatar as palavras procuradas
e por aí vai
-
VEJA SE É ISSO
não testei completamente , para falar a verdade nem sei se entendi
Sub Baixa2() Application.ScreenUpdating = False With Sheets("Registro") c = Cells(1, "J").Column lf = .Cells(Rows.Count, c).End(xlUp).Row l2 = Sheets("Pagos").Cells(Rows.Count, "b").End(xlUp).Row + 1 For L = lf To 3 Step -1 If .Cells(L, c).Value2 = "PAGO" Then Sheets("Pagos").Range("B" & l2, "i" & l2).Value2 = .Range("B" & L, "i" & L).Value2 .Rows(L).EntireRow.Delete l2 = l2 + 1 End If Next End With MsgBox "Baixa de Pagamentos Realizada Com Sucesso", vbOKOnly, "Atenção" Application.ScreenUpdating = True 'ActiveWorkbook.SaveEnd Sub
-
eu também sou curioso e também já me ajudaram muito
como você não postou uma planilha como o basole falou nao tem como adivinhar o que está acontecendo
na sua macro não tem definição do que é entrada2
poderia ser uma variavel publica definida em outra macro
poderia ser o nome de um textbox, de combobox
eu falei que para ser ajudado precisa passar o maximo de informação possivel
eu por minha vez faço apenas perguntar confusas e não posto exemplos então tenho que me contentar com suposições e buscar minhas próprias soluções, "sou enrolado mesmo"mas já que você acha que estou sendo mau educado, me abstenho de tentar ajudar
e somente posso falar poste uma planilha igual a que está usando para que outros possam solucionar o seu problema
-
então você não pesquisou sobre celulas nomeadas e vba
mas tudo bem, acho que esqueci das aspas
Sheets( range( "ENTRADA2" ).Value ).
mas você poderia ter falado deste o inicio que era uma celula nomeada
você simplesmente chamou de variavel,
-
eu não consigo visualizar o que é ENTRADA2
quando você usou value deu erro porque não era um objeto
sem value deu erro porque não tem um nome de sheet valido
se for o nome de uma celula na planilha você tem que usar
Sheets(range(ENTRADA2).Value).
fora isso você tem que mostrar o que é ENTRADA2
para ser ajudado você tem que primeiro se auto ajudar e dar o maximo de informação possivel,
ou então apenas absorver o pouco de informação passada
eu sou enrolado para pedir ajuda, muito mais que você,
mas eu não fico na dependência e faço teste e pesquisas para saber onde estou errando
-
Sheets(ENTRADA2.Value)
não se usa .value em variaveis
tem que ser assim
Sheets(ENTRADA2)
.value apenas em objetos como range, textbox e essas coisas
a não ser que você tenha setado essa variavel como range
Dim ENTRADA2 As RangeSet ENTRADA2 = Range("a1")Sheets(ENTRADA2.Value).Select
-
aquilo la não é vba, é C++
e é a minha linha de raciocínio que é enrolada para aprender, lá eu comecei com uma coisa e acabei em outra
ano passado quando comecei com o vba foi a mesma coisa
mas a respeito do novo problema, aconselho a abrir um novo topico
algo como "separar valor moeda de texto"
talvez alguem apareça com uma solução antes.
e colocar o link desse aqui junto
- 1
-
tem
mas para isso vou ter que ter mais detalhes de como está o texto
e varios exemplos para identificar diferenças padrões
prepare um exemplo com mais detalhes com as posições corretas
s´não vou prometer para hoje nem amanha porque estou quebrando a cabeça com algo aqui
mas basicamente a macro vai correr o texto procurando numeros
algo como isso que eu fiz aqui
só que em C++ "estou tentando aprender"
http://forum.clubedohardware.com.br/forums/topic/1139109-char-qual-a-maneira-certa-de-usar/
de uma olhada no final
-
não é para colocar * no historico eu fiz isso na macro
e o nome da macro tem que está igual
aqui rodou
como teste coloque a aba1 como Fornecedores e cole os nomes de fornecedores na cola A essa que você colocou como exemplo
a aba 2 como HISTORICO DE RECEBIMENTO e cole o historico na coluna A
ou troque os nomes da abas na macro
pLf = "Fornecedores"
pLh = "HISTORICO DE RECEBIMENTO"
- 1
-
Estou fazendo uma macro aqui
estou colocando para listar o nome do fornecedor ao lado do historico, vai fica mais rápido e você não vai ter duplicatas, podendo comparar direto com o banco atual de fornecedores ou algo assim
Sub busca()'Cells(linha, coluna)='Cells(l, 1) = Cells(linha, "A") pLf = "Fornecedores" ' aba de nomes lif = 2 'linha inicial lff = Sheets(pLf).Cells(Rows.Count, 1).End(xlUp).Row pLh = "HISTORICO DE RECEBIMENTO" 'aba de busca lih = 2 lfh = Sheets(pLh).Cells(Rows.Count, 1).End(xlUp).Row ' varre o histico For h = lih To lfh ' pega o texto do historico hov = Sheets(pLh).Cells(h, 1).Value2 'varre a lista de fornecedores For f = lif To lff 'compara as duas listas t = UCase(hov) Like "*" & UCase(Sheets(pLf).Cells(f, 1).Value2) & "*" If t Then ' se coincidir cola nome do fornecedo do lado e pula para o proximo Sheets(pLh).Cells(h, 2).Value2 = Sheets(pLf).Cells(f, 1).Value2 Exit For End If Next NextEnd Sub
inicialmente ficou assim, o nome da aba tem que ser igual
- 1
-
ok então
então vamos começar
você não respondeu se pode ficar em abas separadas
primeiro, as palavras tem que ser exatamente iguais, espaço entre outras coisa
para tentar contornar o problema de não ser, se pode desmembrar a frase
para fazer um teste tipo
*CAFE*SEVERINO*
no caso do asterisco se pode ter qualquer coisa no lugar
-
não sei como tem a entrada de dados e nem como é o projeto no geral
mas o ideal mesmo seria ter os dados já com entradas separadas,
id. --- fornecedor ---endereço ---...
e assim se ter toda a informação já pronta para ser usada em qualquer situação sem precisar ficar adaptando
você pode ter um cadastro dos fornecedores com os quais trabalha com ID
um cadastro de mercadorias com o id dos fornecedores
e por aí vai
mas como não sei qual a origem dos dados e a sua real necessidade ou possibilidade de implementação...
----------------------------------------------------------------------------------------------------------------
você não precisa ter as duas informações na mesma aba
já que vai se duplicado acho que o melhor é deixar em abas separadas
- 1
-
brenda
dá para fazer isso facilmente com loop e a função like
mas como, e onde vai ficar o resultado?
é para mostrar o a celula onde está?
e é para mostrar o resultado em qual parte da planilha?
e se achar mais de um?
-
já tentou outras ide?
http://falconcpp.sourceforge.net/
https://www.facebook.com/falconcpp
https://netbeans.org/
http://www.codeblocks.org/eu tive alguns problemas com o dev
o falcon ficou na medida para mim que sou iniciante
- 1
-
Eu desejo criar meu próprio compilador do 0, porém não acho nenhum lugar explicando minhas dúvidas:
O mais perto que eu achei era um criando uma compilador usando C#, eu quero criar uma linguagem nova, do 0.
Por exemplo: Vamos supor que o C# não existe ainda, e eu vá cria-lo a partir do 0, em vez de eu criar uma linguagem a partir de uma que já existe
Sei que é muito difícil, porém estou capacitado.
Sei as fases do compilador, tipo, análise léxica, semântica, sintática, esse tipo de coisa.
Só que não sei como definir tipos de código da minha linguagem, não sei por onde começar, tipo:
onde eu vou escrever a estrutura da minha linguagem;
como eu vou definir as funções dos códigos e o resultado.
Eu quero criar um linguagem imperativa, só que mais simplificado que essas que vemos por ai é claro. E junto criar minha plataforma onde essa minha linguagem pertencesse, assim como o .NET
você pode fazer um plugin para o Netbeans
https://platform.netbeans.org/tutorials/60/nbm-prolog.html
https://netbeans.org/community/magazine/html/03/schliemann/
http://wiki.netbeans.org/SchliemannNBSLanguageDescription
https://platform.netbeans.org/tutorials/nbm-mfsyntax.html#gettingtoknowthesample
https://sites.google.com/site/tecguia/home/crie-sua-propria-linguagem-seu-proprio-compilador
- 1
-
estou tentando me acostumar com a forma de escrever do c
passo mais tempo ajeitando posição de {}, colocando ponto e virgula que esqueço, e == nos if
a função ficou assim, tem algumas falhas como 2.000,50, eu não coloquei para pegar os centavos
mas como não serviria para nada mesmo vou deixar assim mesmo
o nome da função deveria ser separanum
#include <cstdlib>#include <iostream>#include <string.h>using namespace std;int QLt(char* lt){ int t = 0; while(*lt != '\0') { lt++; t++; } return t;}//-----------------------------------------------------------------------------------------double convertNUM( char* StrNum, char* StrReferencia, int ocorrencia, int quantidade = 0){ double valorX = 0; int n = 0, L2 = 0, L = 0, C, t = 0, ts, tr; ts = QLt(StrNum); tr = QLt(StrReferencia); int d2, ic, pt = 0; if(ocorrencia >= 0 ) { L = 0; d2 = ts + 1; ic = 1; } else//if(ocorrencia < 0 ) { L = ts; d2 = -1; ic = -1; } while(L != d2) { for (C = 0; C < tr; C++) { if (StrNum[L] == StrReferencia[C]) { n = n + 1; if (C < 10) { if(ic == 1) { valorX = valorX * 10 + C; if (n == 1) { L2 = L-1; } } else// if(ic == -1) { if(n > 1) { valorX = ((C * pt) + valorX); pt = pt * 10; } else { valorX = C ; pt = 10; } } } goto prxL; } }//for StrReferencia if (n > 0) { t += ic; if (ocorrencia == t || ocorrencia == 0) { if (ic == -1) { L2 = L; } if(StrNum[L2] == '-') { valorX = -valorX; } return valorX; } else { valorX = 0; n = 0; pt=0; } }prxL: ; L += ic; } //for StrNum return 0;}//=========================================================================//========================================================================int main(){ char Arnut[] = "0123456789."; char texto[100]; strcpy( texto, "maria pagou R$2.000,00 na data 20/10/2015, 2 dias de atraso"); cout << "valor pago: " << convertNUM(texto, Arnut, 1) << endl; cout <<"Dia: "<< convertNUM(texto, Arnut, -4) << endl; // aqui a função começa a ler o texto da direita para a esquerda cout <<"mes: " << convertNUM(texto, Arnut, -3) << endl; cout << "Ano: "<< convertNUM(texto, Arnut, -2) << endl; cout << "dias de atraso: " << convertNUM(texto, Arnut, -1) << endl; return 0;}
depois de ajustar algumas coisas na IDE o codigo ficou melhor de postar, mas para escrever ainda tenho que afastar bem para não me perder
vou escrever algo diferente para ir me acostumando com as funções e não só com a escrita
por motivo de comparação
como ficaria a mesma coisa escrita de forma mais formal ?
-
o post é bem antigo
mas se você é iniciante pode tentar o Falcon
eu me dei bem com ele, isso se for para C/C++
é bem intuitivo de usar
eu tenho o ms aqui mas nem usei
mas tem um monte para escolher
http://falconcpp.sourceforge.net/screenshots/
https://www.facebook.com/falconcpp
https://netbeans.org/
http://www.codeblocks.org/
http://www.geany.org/Main/HomePagese pegar o netbeans escolha a versão somente para C++
a outra completa é bem estranha
-
o objetivo do codigo é aprende e me acostumar com os {}
mas já está todo bagunçado porque com o tira e bota no meio das {}
o auto complete da ide me enrolou e eu perdi a sequencia do }
#include <cstdlib>#include <iostream>#include <string.h>using namespace std;int QLt(char *lt){ int t = 0; while(*lt != '\0') { lt++; t++; } return t;}double convertNUM( char * StrNum, char * StrReferencia, int ocorrencia, int quantidade = 0){ double valorX = 0; int n = 0, L2 = 0, L = 0, C, t = 0, ts, tr; ts = QLt(StrNum); tr = QLt(StrReferencia); int d2, ic, pt = 0; if(ocorrencia >= 0 ) { L = 0; d2 = ts; ic = 1; } if(ocorrencia < 0 ) { L = ts; d2 = 0; ic = -1; } while(L != d2) //for (; L == d2; L+=ic) //for ( L = 0; L <= ts; L++) { for (C = 0; C < tr; C++) { if (StrNum[L] == StrReferencia[C]) { n = n + 1; if (n == 1) { L2 = L; } if (C < 10) { if(ic == 1) { valorX = valorX * 10 + C; } else { if(n > 1) { pt *= 10; valorX = ((C * pt) + valorX); } else { valorX = C ; pt = 10; } } } goto prxL; } }//for StrReferencia if (n > 0) { t += ic; if (ocorrencia == t || ocorrencia == 0) { if(StrNum[L2 - 1] == '-') { valorX = -valorX; } return valorX; } else { valorX = 0; n = 0; } }prxL: ; L += ic; } //for StrNum return 0;}int main(){ char Arnut[] = "0123456789.,"; char vkk[100] = "2maria pagou R$2.000,00 para joão com %20 de descont7o9"; int di = 1; cout << convertNUM(vkk, Arnut, di) << endl; strcpy( Arnut, "0123456789.");// char vkk = new *char; strcpy( vkk, "A data de pagamento é 20/10/20150, 2 dias de atraso"); di = -2; cout << convertNUM(vkk, Arnut, di) << endl; return 0;}
com o else no inicio as variaveis estava ficando com valo maluco, assim como você pode ver na imagem
quando retornava alguma coisa que fazia sentido estava assim
#include <cstdlib>#include <iostream>#include <string>using namespace std;const char Arnut[] = "0123456789-.,";int len(char * lt){ int t = 0; while(*lt != '\0') { lt++; t++; } return t;}double convertNUM( char * StrNum){ double valorX = 0; int n = 0, L2 = 0, L, C, t; t = len(StrNum); for ( L = 0; L <= t ; L++) { for (C = 0; C < 12; C++) { if (StrNum[L] == Arnut[C]) { n = n + 1; if (n == 1) {L2 = L;} if (C < 10){ valorX = valorX * 10 + C;} goto prxL; } } if (n > 0) { if (L2 > 0) { if(StrNum[L2] == '-') { valorX =-valorX; } } return valorX;//L2;// }prxL: ; } return 0;}int main(){char * vkk = new char[100]; vkk = "aa -2.009ughjghjghjgjgh"; cout << convertNUM(vkk) << endl; return 0;}
depois coloquei para pegar as sequencias numericas
"R$-2.009 , pago com %10"
convertNUM(vkk,1)-->>2009
convertNUM(vkk,2)-->>10
aí tentei colocar para pegar os numeros em sentido inverso
tipo vkk,-1 = ultma sequencia numerica
tipo vkk,-2 = penúltima sequencia numerica
primeiro foi com o for mesmo
for (; L == d2; L+=ic)
mas aí o L asumia de cara o valor de d2 e ic não ficava negativo, pensei que era o for e passei para o while
mas as variaveis que eu já tinha setado como 0 no inicio apareceram com valores estranhos, como se pode ver na imagem
depois que troquei o o ELSE por outro teste IF já tinha bagunçado o codigo todo
eu tenho uma macro parecida funcionando na minha planilha " nem uso"
ela é capaz de buscar sequencias
é como um like, mas com a opção de quebra e numero mínimo de caracter encontrado, só não tem a questão de numeros
tipo eu procuro algo mas não sei como se escreve então eu coloco mais ou menos e coloco o minimo de letras iguais
pode colocar uma lista de ignorados,sobre pega do final para o inicio ajuda para buscar ultimas ocorrencias de grandes centenças
se eu tiver animo vai ser capaz de pegar sequencias com tamanho definido também
"552198980000"
convertNUM(vkk,1,2)-->>55 --->=1ª sequencia de 2 letras
convertNUM(vkk,2,2)-->>21--->=2ª sequencia de 2 letras
convertNUM(vkk,2,4)-->>9898--->=2ª sequencia de 4 letras
convertNUM(vkk,-1,4)-->>0000--->=1ª sequencia de 4 letras de traz para frente
nesse caso ele somente reconhece sequencia numericas
mas se trocasse para char poderia retornar qualquer tipo de sequencia "trabalhando a macro"
é mais para estatisticas e buscar em listas inregulares
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Por que variavel não e tratada como tal?
em Microsoft Office e similares
Postado
é somente suposição porque não me adentrei muito nos bd
qundo se usa rstDados!["nome"]
as aspas também estão sendo tratadas tonando o nome uma string
e
var = "nome"
rstDados![var]
seria algo como
rstDados![nome]
então teria que fazer assim
var =""" & "nome" & """
rstDados![var]
porque aí var teria as aspas encluidas