久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 1623|回復: 3

excel 中BVA 麻煩大佬幫忙解釋一下

[復制鏈接]
1#
發表于 2022-6-6 18:03:11 | 只看該作者 |倒序瀏覽 |閱讀模式
Option Compare Text
% l! d9 w$ a' u% H4 C' U  s
  a6 d! P3 F6 W* g( |. h$ kPublic Function GSXS(Ref)5 j% S. i/ l3 k  e5 T! o

8 B% P" K0 t* k" O    GSXS = Ref.Formula
# W; \9 k6 q& o  ^7 m+ h1 K$ d$ H0 Q$ G4 x
End Function& O2 v1 q( G6 T' {& ^6 v

' o: F( H* X$ E6 @5 f! u9 wPublic Function ZZL(RowHead, ColHead, Dummy): l2 p* m  E- G
& i) w4 g5 j, E) D( ?0 e/ M6 J
Dim Values(20) As Variant9 M4 g8 h# `% d0 A
Dim PrevData(20) As Variant0 g9 ~- t: L: s) v' G( w1 E8 ]
Dim LE(20) As Integer- \# c0 b: ^% z8 G* J

# A: v  Y/ q, P* l  X1 @7 AOn Error GoTo err_handler19 I: H- y% J% M! J2 f3 l
' Do the vertical selection from rows
* y. y6 P7 d. M! d; TIf RowHead.Rows.Count = 1 Then* `& g# D; T% [  u1 l' ?0 M
    rindex = RowHead.Row    ' first argument is any cell on the row of possible values
8 b7 X: M# r; t, HElse  S: V4 o$ \" ~: E
    ' Store the values to be compared with each column0 x: j5 E. H' u& V, f
    For ii = 1 To RowHead.Columns.Count
0 ^& S6 ~0 H9 j) z        rngname = RowHead.Cells(1, ii)
2 H+ G( n# |! m+ n, ~        LE(ii) = InStr(rngname, "<=")- V1 o3 _6 J1 {" G8 l) J; E
        If LE(ii) > 0 Then
/ |& Z- [3 E8 b6 L- Z6 x1 q            rngname = Mid(rngname, 1, LE(ii) - 1)
; u- A; i, @, N6 g1 H9 p        End If6 o( s0 r! B3 M
        Values(ii) = Range(rngname)
: e& j; \( |6 U7 }        'debug.Print "Variable:" & rngname & " is:" & Values(ii)
- p8 `1 M0 S  i        PrevData(ii) = ""   ' initialise
7 \2 J1 E, u" e$ k3 y% r    Next ii
) s5 f, {- C3 R$ |( w6 O$ k' l
- X; R9 `9 ?" I3 {    rindex = 2
" @: m2 ~6 Z0 ]9 w    'debug.Print RowHead.Columns.Count1 o* S" q3 u# j& I& N
    Match = False; m+ U% [/ {* {
    For r = rindex To RowHead.Rows.Count
6 [- g5 I+ j7 @0 }5 z  B0 A        For c = 1 To RowHead.Columns.Count   ' for each dimension
6 n! g% G3 V3 D0 j( p$ ~( h- ?& K            data = RowHead.Cells(r, c)# k6 ~/ J7 F( k0 O( ~* d
            If data = "" Then
* T& D' a: I# R% r# Y                'debug.Print "Empty cell found: using " & PrevData(c); U' G! F6 i; E8 b$ u
                ' use the last valid cell in this column+ {6 `$ \  }7 N: Q& S4 `3 c$ p  R! W
                ' (this is to handle merged cells), U1 H  ]; i9 d
                data = PrevData(c)6 I' x' a3 y9 G7 M; V4 v5 s
            End If
1 |" H8 p. {: R8 d2 y            'debug.Print "data:" & data: W1 ^# F2 x+ D
            PrevData(c) = data ' save for use by empty cells! Z; d/ F( \2 v5 ~
            If data = Values(c) Or (data > Values(c) And LE(c) > 0) Or data = "*" Then8 c/ X: J- A+ k3 m, i- G
                If c = RowHead.Columns.Count Then   ' All columns match - It's a go
* a5 y$ J2 U5 Z" k( X# d8 U* D                    Match = True$ A( n9 t" O& c, F5 S- D8 r' N9 D
                End If& k6 v$ Y- l7 s3 x/ y4 t1 K. B
            Else    ' This column doesn't match - go to the next row- d1 Q* T6 J. u& J5 b; W
                Match = False
: S; N: z8 ~3 r' Q5 e$ c7 K                Exit For
( M6 e- W! v# u2 o0 y8 m            End If
) ^" A. h' f" q7 [* G        Next c
, ]& V2 P) V5 ?/ g+ A) e1 B' o, |+ Z        If Match = True Then    ' Don't search any more rows4 q! I9 i" a2 j( D; s
            rindex = r: c$ E4 N* V7 B' o5 q; N6 a* G
            Exit For4 [' C: F, P: {& D* k8 `* ?' R+ e
        End If
+ h- [" t$ g4 m2 E1 F3 S    Next r
9 q$ G3 k+ t0 h  u( e
7 ~) V% s" h9 ~7 i4 A    If Match = False Then   ' Didn't find a matching set of values
' Q6 R; }) x1 K) B4 n" f        ZZL = "No match for rows"
  Z, v) G$ H# e; l4 n) F6 U/ I        Exit Function# {' g8 o( q8 R# d5 p7 Y6 {& U
    End If
$ E- p6 O% e$ s' X1 m) b$ S0 e( a; |, b! Z7 k% a$ K7 r
    rindex = rindex + RowHead.Row - 1   ' make absolute index
( d2 q2 Q$ D) a3 ~5 G& ?End If  k8 A: y+ w5 h& G* p

* N* p* k1 n9 D' Do the horizontal selection from columns
4 ~! y" X) H" C8 K8 G' ^If ColHead.Columns.Count = 1 Then4 w8 f( W, ^  {3 C# m2 y: n8 W
    cindex = ColHead.Column* }' U; k. o- x8 l$ i
Else/ p8 G1 _/ I$ [, W. I2 y3 L, i
    ' Store the values to be compared with each row of the header
* b4 \8 ^6 o8 x! L% O5 x* L    For ii = 1 To ColHead.Rows.Count4 i, T- u0 p' T1 m; U; E% I
        rngname = ColHead.Cells(ii, 1)
$ ^- B* H: O5 i/ p( J! o        LE(ii) = InStr(rngname, "<=")
1 i. a. g! N4 m/ j" Q, F6 d        If LE(ii) > 0 Then
( x6 S5 o6 D, C" X5 O" b' }/ T' m            rngname = Mid(rngname, 1, LE(ii) - 1)
  ~' B% p/ X) a        End If. W% u  w' v. ]3 G' i) {
        Values(ii) = Range(rngname)' O% }* R9 M) ?, Y' J4 e) |3 s7 f1 Q5 a
        'debug.Print "Variable:" & rngname & " is:" & Values(ii)0 J7 D6 D9 `) |# Z
        PrevData(ii) = ""   ' initialise0 r6 H# p" d! o* R
    Next ii
( C8 A  `" b4 ?# @- P! {2 H
' G# x( N8 K: ]8 B    cindex = 2
0 j$ ^4 y, m* O$ u& r( [( {7 e. W    'debug.Print ColHead.Columns.Count, U( b( W' |" J- }: l1 u
    Match = False- [$ Q  M2 H! M% O  ~% q
    For c = cindex To ColHead.Columns.Count
. R) O% v* b5 K0 C3 J        For r = 1 To ColHead.Rows.Count   ' for each dimension1 c, v& |# x, R9 J0 k1 b
            data = ColHead.Cells(r, c)
. a+ n% C" a/ x( ^) _5 B3 J            If data = "" Then* h7 j$ x+ r  ~$ }9 e! \# r( Q
                'debug.Print "Empty cell found: using " & PrevData(r)4 _" [7 o9 @% i! }
                ' use the last valid cell on this row
7 j6 t3 g+ g' U' H6 v& ]$ o0 _                ' (this is to handle merged cells)- c1 k6 P8 m, U8 Y
                data = PrevData(r)( g4 F3 f$ `% I2 W1 c# q0 ?, [
            End If
- o3 T& a# J& a6 `4 k$ ]6 N2 `; V            'debug.Print "data:" & data
4 {8 d0 A# R4 X            PrevData(r) = data ' save for use by empty cells7 Y* Q% c+ Q/ X' t+ C$ Y* W6 r* Z4 l
            If data = Values(r) Or (data > Values(r) And LE(r) > 0) Or data = "*" Then( ?  Y5 z3 E' }3 B8 Q0 o5 J2 T
                If r = ColHead.Rows.Count Then   ' All rows match - It's a go
. n$ P; F7 S! k2 }* A7 z) p) @2 p" ~                    Match = True: C, Z/ P& e, P) Y
                End If
  v8 X) {! n& f3 q! C            Else    ' This row doesn't match - go to the next column; E8 [  A; }. [& W2 B
                Match = False( Q% }( v1 v2 r2 H! Z! U2 ?
                Exit For
' O3 X" n' ]1 i; h8 E5 |            End If" \0 s* i- d$ R# S2 p
        Next r
( Q! q4 c) Y$ p4 E  L        If Match = True Then    ' Don't search any more columns8 C8 Y: |# V5 Y7 V
            cindex = c8 X: e# J9 V. e$ Z' F
            Exit For
) G. k$ ~, H) g$ W# B1 v6 i6 d% d        End If
# i# g5 S8 y4 b6 k% f    Next c
" {; l1 n# y; e) R
5 k6 q( S) @1 G9 N7 E: l5 p    If Match = False Then   ' Didn't find a matching set of values
8 y8 L: I; F+ r& i        ZZL = "No match for columns"  z9 W4 H* B# T7 z0 H! f; K% ^
        Exit Function
& O( G5 ?' c, C  ]; B/ w    End If( V2 b2 _, b: m) Y5 d; f

$ {; i& Y8 E: `8 t4 ?5 |0 p( D    cindex = cindex + ColHead.Column - 16 T4 z& N, h5 @! _/ T. X9 P
End If* q2 U# L; B) J
% u& q5 X) J' f' P' E5 T1 L
' Return the cell value from Table
( ~) w( B# \& u& ^'debug.Print "Answer is in (R,C):  " & rindex, cindex- v7 K8 s0 E# x* R$ ^" y
ZZL = ActiveSheet.Cells(rindex, cindex)$ r4 R1 t0 L, R% Y
'debug.Print "Answer is : " & ZZL" Q' ^5 _$ l; \; `
Exit Function, i, X2 N1 W2 x* W
+ g% q) S2 Q$ K) _, I: U
err_handler1:
1 Z! ?3 i) u' c/ D: F, GZZL = "Error on range '" & rngname & "'"+ a, H9 @# U* r$ k; A
# M) L) J% P' E* s. M6 j3 F
End Function
4 o7 K+ F; M0 L7 |" ^( M' M  M
( m& A- s8 {) k5 @* `  P
回復

使用道具 舉報

2#
 樓主| 發表于 2022-6-6 18:04:26 | 只看該作者
本人是小白,想請教大佬,如何能看懂以上信息
3#
發表于 2022-6-6 19:17:09 | 只看該作者
微軟官方的bbs里是有專業的VBA教程和API端口說明能檢索的(全英文)
4#
發表于 2022-6-7 08:52:01 | 只看該作者
上excel論壇問問看
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-7-19 12:18 , Processed in 0.062470 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表