ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 兰色幻想

带你入门VBA系列之:不懂的代码快点贴过来

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-7-24 17:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

蓝老师,您好:

我有一段代码运行不了,发的贴也没有解决问题,所以请求您给予指教

代码是要把EXCEL表"生产数据"里的数据全部导出到SQL数据库"生产数据1"里的"生产数据"表里去(增加数据),代码和问题如下:

Sub 导出数据到SQL()
  Dim TempStrCon As String
  TempStrCon = "Provider=SQLOLEDB.1; Integrated Security=SSPI;Persist Security Info=true;  Initial Catalog=生产数据1;User ID=sa; Data Source=ZHUYUNHUI" '这里是服务器名对吗?
  

' (请教:上面指定了主机名和数据库名,在这个数据库里还有起他数据表,请问在哪个地方来指定数据要引入的表名呢,多谢)


    Dim ADOCon As adodb.Connection '运行到这里出编译错误信息,是不是要做什么设置呢?
   Dim ADORec As adodb.Recordset
   Set ADOCon = CreateObject("ADODB.Connection") '
   ADOCon.Open TempStrCon
   ADOCon.CursorLocation = adUseServer
 For x = 1 To 10
s1 = Cells(x, 1)
S2 = Cells(x, 2)
s3 = Cells(x, 3)
s4 = Cells(x, 4)
Set ADORec = ADOCon.Execute("Insert Into xsfy" & " (日期,班组,订单号码,款号,产品名称) " _
& "Values('" & s1 & "','" & S2 & "','" & s3 & "','" & s4 & "');")
End Sub
请蓝老师指点 , 谢谢

TA的精华主题

TA的得分主题

发表于 2006-7-25 00:19 | 显示全部楼层

希望我这个菜菜能在不会中学到!谢谢!

兰版主:能否麻烦详释一下这段代码吗?万分感谢!!

Sub lsy()
    For i = 2 To Range("A65536").End(xlUp).Row
        If Cells(i, 1) <> "" And Sheet2.Columns(1).Find(Cells(i, 1)) Is Nothing Then
            Range("A" & i & ":E" & i).Copy Sheet2.Range("A65536").End(xlUp).Offset(1, 0)
        End If
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2006-7-25 07:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-7-25 17:11 | 显示全部楼层

Sub lsy()
    For i = 2 To Range("A65536").End(xlUp).Row '在当前表里,从2循环到a列的最后一非空行
        If Cells(i, 1) <> "" And Sheet2.Columns(1).Find(Cells(i, 1)) Is Nothing Then '假设a列此行的单元格不为空,并且在sheet2里的第一列没有找到的话
            Range("A" & i & ":E" & i).Copy Sheet2.Range("A65536").End(xlUp).Offset(1, 0)'复制此行的a~e列的数到sheet2里的最后一行的下一行
        End If
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2006-7-25 17:21 | 显示全部楼层
QUOTE:
以下是引用supper-ST在2006-7-17 21:30:46的发言:

Sub 按钮7_单击()'用数组筛选不重复数据
Dim i&, j&, p&, q&, k&, arr, arr1(1 To 10000, 0)
p = [a65536].End(xlUp).Row 'a列最后一行
[i:i].ClearContents '删除i列的内容
arr = Range("a1:a" & p) '从单元格取值,给一个数组,这里arr就是一个一行一列的数组(即arr(1 to p,1)),故arr1(1,1) = a1的值,arr(1,2) = a2的值,其他类似
k = 1: i = 1

 arr1(1, 0) = arr(1, 1)'这句严重不明白,这句就是说,arr1这个数组的第一个数等于a1的值
Do While i < p + 1 ' 循环
   For j = 1 To k
      If arr(i, 1) = arr1(j, 0) Then GoTo l
   Next j
   k = k + 1
   arr1(k, 0) = arr(i, 1)
l:
i = i + 1
Loop
[i1:i10000] = arr1'这句也严重不明(直接赋值给单元格)

'数组从单元格取数,及单元格的值等于数组,数组都要求是2维数组,也可以理解成单元格就是一个二维数组,建议 supper-ST 找点基础的数组资料看看。

之所以,用数组来处理问题,是因为数组的计算速度非常快,快的惊人!!!


End Sub

TA的精华主题

TA的得分主题

发表于 2006-7-25 17:30 | 显示全部楼层
QUOTE:
以下是引用cuang2002在2006-7-17 21:30:32的发言:

Sub lsy()
    On Error Resume Next '假设代码运行时出现错误,代码将忽略错误执行下一句
    Dim c, i%, j%, fd, sht As Worksheet
    For i = 2 To Range("A65536").End(xlUp).Row Step 5 '从第2行到a列的最后一非空行,按5递增循环,如第一次i=2,则第二次i=2+5,第三次i= 2+5*2,依次类推

        For Each sht In Worksheets '在当前工作簿里的所有工作表里循环
            If sht.Name <> "汇总" Then '假如工作表不等于“汇总”工作表,则
                With sht.Columns(1) 'with结构,对工作表的第一列进行操作
                    Set c = .Find(Cells(i, 1)) '在第一列里查找a列i行的数
                    If Not c Is Nothing Then '假如找到了
                        fd = c.Address '(这里全是find方法的代码,建议看看帮助)记录第一个找到的c单元格的地址
                        
                        Do
                            For j = 1 To 5 ' 操作
                                Cells(i, 1).Offset(j - 1, Rows(1).Find(sht.Name).Column - 1) = Cells(i, 1).Offset(j - 1, Rows(1).Find(sht.Name).Column - 1) + c.Offset(0, j)
                            Next
                                
                            Set c = .FindNext(c) '在a列里找下一个数
                        Loop While Not c Is Nothing And c.Address <> fd '循环条件时能找到下一个c,且不能与先前找到的地址重复

                    End If
                End With
            End If
        Next
    Next
End Sub

请各大虾们帮我看一下我加粗字体的语句是什么意思。。看不懂。。

TA的精华主题

TA的得分主题

发表于 2006-7-27 14:58 | 显示全部楼层

兰老师:您好!

我是亲新手请问我应该从那里学起呀.网站里有没有从最简单的开始学的地方啊.

TA的精华主题

TA的得分主题

发表于 2006-7-28 08:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

Sheets("计算用表").Select  选择工作表: 计算用表
Application.Goto Reference:="R3C256" 跳转到 Range("IV3")单元格
ActiveCell.FormulaR1C1="1100"  活动单元格输入 1100 的内容
Range("IV4").Select   选择Range("IV4").单元格
Range("E8").Select    选择Range("E8").单元格
Sheets("备料单").Select 选择 备料单表
Range("B3").Select       选择Range("B3").单元格
我是初学VBA的,谁能告诉我这段代码的意思

[此贴子已经被plxmm于2006-7-28 10:00:59编辑过]

TA的精华主题

TA的得分主题

发表于 2006-7-29 21:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

赵老师:能否麻烦详释一下这段代码吗?万分感谢!!

k = Sheets(1).Range("a65536").End(xlUp).Row + 1
Sheets(1).Range("a" & k).Resize(n - 2, 23) = arr2
arr2 = Range("v" & k).Resize(n - 2, 1)
For j = 1 To n - 2
arr2(j, 1) = WorksheetFunction.Rank(arr2(j, 1), Range("v" & k).Resize(n - 2, 1))
Next

Range("w" & k).Resize(n - 2, 1) = arr2

Next
n = Sheets(1).Range("a65536").End(xlUp).Row
arr2 = Range("v3:v" & n)
For j = 1 To n - 2
arr2(j, 1) = WorksheetFunction.Rank(arr2(j, 1), Range("v3:v" & n))
Next
Range("x3:x" & n) = arr2
With Range("a3:x" & n)
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlMedium
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlThin
.Sort Key1:=Range("A3"), Order1:=xlAscending, Key2:=Range("W3"), Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
End With
Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2006-7-30 11:06 | 显示全部楼层

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 3 Then
    Image1.Picture = LoadPicture("C:\XSZP" & Target.Value & ".jpg")
  End If
End Sub
请老师帮我注释一下,另外,我想图片框显示在屏幕的绝对位置(不随表格的移动而移动),应如何做?

谢谢老师。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-20 00:44 , Processed in 0.044999 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表