如何在vba中更改包含特定值的列的单元格偏移值?

时间:2015-03-06 12:13:34

标签: excel vba excel-vba

我需要能够将包含特定单词的列左侧的单元格值更改为。例如,在COLUMNS CD中,我有

    C     D    E
  1 dim   0
    dim   0
    car   0
    car   0
    dim   0
    car   0

我需要能够制作一个VBA公式,它可以做任何excel,如果公式可以做的。因此,如果我输入excel(而不是vba)if(C1 = dim,D1 = 1,0),那么我会在第D列的第一行和第五行中得到1。

我需要在VBA中执行此操作的原因相当复杂但是一旦我可以在vba中使用if函数来引用它们,那么理论上我可以引用包含Dim的所有内容然后让它们显示1毫秒像以下但总计。不知何故

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
sub changeto1quickly()
range("D1").Value = 1
sleep(1) 
("D1").Value= 0 
End sub

这样我就可以在excel中分配一个按钮来执行这个命令(将所有那些带有昏暗的三个单元格的零改为1到一毫秒),对于C列中具有相应的那些单元格通过3个细胞在右侧细胞的偏移中变暗。

我在VBA上并不是非常先进,但如果可以在不激活或选择单元格的情况下完成,我认为它会更有效率。

这是迄今为止我能想到的最好的

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
sub changeto1quickly()
**if range(C:C)contains Dim.offset(3,0).value**
select.value(s)

range("D:D").**Values** = 1
sleep(1) 
("D:D").**Values**= 0 
End sub



Function ClosePosition(functionId As Long, broker As Long, orderId As
Long, execute As Long) As String   
 Application.ScreenUpdating = False
 If execute = 1 Then
 ClosePosition = prog.ClosePosition(functionId,broker,orderId)                    
Else
    ClosePosition = "NO EXECUTE"
End If
Application.ScreenUpdating = True
End Function

除非我可以更改函数中的函数id以引用具有偏移单元格的列中的所有单元格n另一列等于dim。这可能有效,但它完全不可能,因为它必须将功能改为closeposition(s) - 然后引用if函数或我认为不可能的东西,因为我仍然基本上需要0在某个地方非常快地去1

所以我实际上可以在这个函数中看到一些变化,而不必依赖0快速变为1。如果订单ID可以引用相邻值为相关值的Dim或工具值的列。然后为包含它的所有人运行多个closeposition。它还必须引用与订单ID相同的功能ID。

类似

 Function ClosePosition(functionId As Long, broker As Long, IF COLUMN D CONTAINS, RETURNS STRING OF VALUES) orderId As
Long, execute As Long) As String   
 Application.ScreenUpdating = False
 If execute = 1 Then
 ClosePosition = prog.ClosePosition(functionId FROM STRING ABOVE IF FUNCTOIN,broker,orderId FROM STRNG IF FUNCTION ) 

  close string               
Else
    ClosePosition = "NO EXECUTE"
End If
Application.ScreenUpdating = True
End Function

这样的事可能吗?

Set Rng = Range("B1:B16").Find(What:="0", LookAt:=xlWhole,        LookIn:=xlValues)
Rng.Offset(, 1).Value = "LOW"

0 个答案:

没有答案