VBA的form相关实验2,form里的变量传递和模块里有什么不同?(---未完成-----)

草稿

'1.1 参数的传递,应该还是要以

'Public index1 '传不过去,擦, 这是之前,想把一个form里的变量,传递给其他form 不管用

'怀疑,可能只能public private 只再模块间是这样的

'测试下

'但好方法?,确实先把东西存再excel表,也就是数据库,之后在读,这样安全?

感觉存在数据库表里,是个好思路

0 名词解释: 0.1 作用域 公有变量/全局变量/跨模块变量 public模块级变量 private 或 dim私有变量/ 过程级变量 dim 或 static 0.2 生存周期:(声明作用域会影响生命周期)

声明变量作用域会影响变量的生命周期的关系

下面是网上查的资料

这个

比方说你在一个xls文件中有两个工程(应该1个EXCEL表都只有1个工程吧),那么在某个工程中的模块如果不写这个语句,那么两个工程都可以用这个模块的内容。如果写上Option Private Module,那么另外那个工程就不能使用这个模块的内容。

下面表格里有几个地方是错的,private声明的变量,因为必须在模块顶部(只要是声明在模块顶部的,即使是 dim 或 public private都一样,因为都是模块级变量了),所以一旦过程内运行赋值后,其声明周期不是过程有效期内,而是模块/整个EXCEL的 workbook 文件有效期内都在生效,而并没有被释放消灭。

下面的代码可以证明

Private Sub tf2()
Debug.Print "x= " & X
Debug.Print "y= " & y
Debug.Print "z= " & z
Debug.Print "z1= " & z1
End Sub
'模块级的,只要不关表就一直在
'过程级马上没,一般变量每次重置计算, static记住之前的
Private Sub tf3()
    X = 1
    y = 111
    z = 222
    z1 = 333
    
End Sub

0.3即使写了参数调用 和 声明作用域,也得先运行那个程序 因为即使是一个public变量,作用域是全局,但是没有被其他程序赋值改变前,值为空 0.4 特殊的静态变量Static (很适合用来计数--因为模块内不清除)

Const aaa1 = 2
Public Const aaa2 As Integer = 111
Public y
Private z
Dim z1
Sub tf1()
Const aaa5 = 555
'Public Const aaa6 = 666
Debug.Print "aaa1= " & aaa1
Debug.Print "aaa2= " & aaa2
Debug.Print "aaa5= " & aaa5
'Debug.Print "aaa6= " & aaa6
End Sub
Private Sub tf2()
'没法调用过程了里得变量的!只能调用过程。
' 函数特殊,有返回值的函数可以当变量调用,但本质还是 调用函数,只是函数返回值是这样
Debug.Print "x= " & X
Debug.Print "y= " & y
Debug.Print "z= " & z
Debug.Print "z1= " & z1
Debug.Print "z2= " & z2
End Sub
Private Sub tf3()
    X = 1
    y = 111
    z = 222
    z1 = 333
    Static z2
    z2 = z2 + 1
    
    Debug.Print "内部X= " & X
    Debug.Print "内部z2= " & z2
    
    
End Sub

1第1部分,模块内和模块之间的 直接使用和调用 1.1 常量的 直接使用和调用 1.2 常量的定义,赋值和生命周期


Const aaa1 = 2
Public Const aaa2 As Integer = 111
Sub tf1()
Const aaa5 = 555
'Public Const aaa6 = 666
Debug.Print "aaa1= " & aaa1
Debug.Print "aaa2= " & aaa2
Debug.Print "aaa5= " & aaa5
'Debug.Print "aaa6= " & aaa6
End Sub

1.2.1直接使用常量


'----------------此处是模块5,下面是模块6的内容------------------
'1常量
Private Const a1 = 5
Public Const a2 = 5
Public b5

'----------------此处是模块6,下面是模块6的内容------------------
Private Const a3 = 777
Private Const a4 = 778
Private b7
Public b8
Sub test0001()
Debug.Print "调用常量" & "private 不能跨模块,public可跨模块,取不到其他模块的private内容,a1只能识别为本模块的 过程级变量名"
Debug.Print "其他模块的 a1=" & a1
Debug.Print "其他模块的 a2=" & a2
Debug.Print "a3=" & a3
Debug.Print "a4=" & a4
Debug.Print
End Sub

1.3 常量的调用

常量一般都是声明了直接使用吧,本身不变,没有什么调用的必要了吧?

2 变量的使用 和调用 2.1 代码的封装,无法访问 封装内部的变量,只能整体调用 2.2 整体调用方式

function t2

t2=XXXX

end function

2.3 调用过程,也需要看 过程本身的作用域,比如private sub 无法被跨过程调用

2.4 过程/函数的 作用域和 变量本身作用域 完全无关! 独立的3 函数和变量的调用 3.1 不带返回值的function 被调用参数时

'----------------此处是模块5,下面是模块6的内容------------------
'4函数,和变量     函数(函数名)可以作为变量用,有无返回值时
'函数,无返回值
Private Function e1()
     d1 = 6
    Debug.Print "内部 d1= " & d1
End Function
Public Function e2()
     d2 = 6
     Debug.Print "内部d2= " & d2
     
End Function

'----------------此处是模块6,下面是模块6的内容------------------
Public d3
Sub test03()
d3 = 5
d4 = 6
d5 = 7
Debug.Print "内部d3= " & d3
Debug.Print "内部d4= " & d4
Debug.Print "内部d5= " & d5
End Sub
Sub test0004()
Debug.Print "d1= " & d1
Debug.Print "d2= " & d2
Debug.Print "d3= " & d3
Debug.Print "d4= " & d4
Debug.Print "d5= " & d5
End Sub
Sub test0005()
'Call e1     '会报错,子过程 sub 或函数 function 未定义!
Call e2
End Sub

3.2 如果函数带返回值了,是一种特殊处理, 变量名= 函数名= 函数返回值return sub内的代码,声明周期也是过程级,应该不影响其他吧

2.2

'----------------此处是模块5,下面是模块6的内容------------------
'1常量
Private Const a1 = 5
Public Const a2 = 5
Public b5
'2变量
'VBA 变量的声明可以在 过程/函数的内/外,但是赋值只能在过程/函数的 内
'bbb = 555    '报错,无效的外部过程
'3过程和变量,调用过程只能用call
Private Sub t1()
     b1 = 61
'     t1 = 61     '报错,缺少函数/或变量,相当于return ,只有函数可以这样返回,sub 过程不能这样return
     Debug.Print "内部b1= " & b1
End Sub
Public Sub t2()
     b2 = 62
'     t2 = 62      '相当于return ,只有函数可以这样返回,sub 过程不能这样return
      Debug.Print "内部b2= " & b2
End Sub
Sub t3()
     b9 = 69
'     t3 = 63      '相当于return ,只有函数可以这样返回,sub 过程不能这样return
      Debug.Print "内部b9= " & b9
End Sub

'----------------此处是模块6,下面是模块6的内容------------------
Private Const a3 = 777
Private Const a4 = 778
Private b7
Public b8
Sub test0001()
Debug.Print "调用常量" & "private 不能跨模块,public可跨模块,取不到其他模块的private内容,a1只能识别为本模块的 过程级变量名"
Debug.Print "其他模块的 a1=" & a1
Debug.Print "其他模块的 a2=" & a2
Debug.Print "a3=" & a3
Debug.Print "a4=" & a4
Debug.Print
End Sub
Public Sub test01()
    b7 = 111
     Debug.Print "内部b7= " & b7
End Sub
Private Sub test02()
    b8 = 222
     Debug.Print "内部b8= " & b8
End Sub
Sub test0002()
Debug.Print "直接调用其他函数过程里的变量是不行的!封闭性,程/函数 内部的内容都是封装的,外部不能访问,只能整体调用"
Debug.Print "b1=" & b1
Debug.Print "b2=" & b2
Debug.Print "b7=" & b7
Debug.Print "b8=" & b8
Debug.Print "b9=" & b9
End Sub
Sub test0003()
Debug.Print "调用过程/函数,也要看 过程/函数本身的 作用域声明,这个和变量的作用域完全独立"
Debug.Print "一般默认过程/函数,都是模块级的,public 公有的"
Debug.Print "不能直接调用其他过程内的变量,而只能根据作用域,调用这些过程,并且只能执行这些过程这个动作,并不能引用 那些过程的结果"
'Call t1   '非public 过程,无法被这么调用
Call t2
Call t3
Call test01
Call test02
End Sub

'没法调用过程了里得变量的!只能调用过程。

' 函数特殊,有返回值的函数可以当变量调用,但本质还是 调用函数,只是函数返回值是这样

Private Sub tf2()
'没法调用过程了里得变量的!只能调用过程。
' 函数特殊,有返回值的函数可以当变量调用,但本质还是 调用函数,只是函数返回值是这样
Debug.Print "x= " & X
    
End Sub
Private Sub tf3()
    X = 1
    
End Sub

1.2.1 变量的直接使用

1.2.2 变量的调用

第2是调用

而传递,可以绕开声明,也可以跨过程

形式和实际

传递方法

位置参数

名称参数

混合的,名称的在后,好像是

---------

'在模块里试下,在form里试下,在workbook和sheet里试下

'然后再试下,能不能跨这几个

'VBA的一个BUG,修改函数,变量的声明范围后,比如去掉加上public 有时候,需要关掉重开,运行代码才会正常,还按老的,

'VBA,甚至跨模块调用时,赋值也有这种滞后的问题

'调用,常量,变量/函数

'call 过程/函数

-------

然后 form内呢

然后三者互相呢

'在模块里试下,在form里试下,在workbook和sheet里试下

'然后再试下,能不能跨这几个

'VBA的一个BUG,修改函数,变量的声明范围后,比如去掉加上public 有时候,需要关掉重开,运行代码才会正常,还按老的,

'VBA,甚至跨模块调用时,赋值也有这种滞后的问题

'调用,常量,变量/函数

'call 过程/函数

1 先在模块里做了实验


'常量
Private Const a1 = 5
Public Const a2 = 5
Public b5
'过程和变量
Private Sub t1()
     b1 = 6
     t1 = 6
     
End Sub
Public Sub t2()
     b2 = 6
'     t2 = 6 '相当于return ,只有函数可以这样返回,sub 过程不能这样return
     
End Sub
'函数和变量
Private Function f1()
     b3 = 55
     c1 = 6
     f1 = 6
     
End Function
Public Function f2()   '过程/函数 不是默认public吗?
     b4 = 66
     c2 = 6
     f2 = 6 '相当于return
     
     b5 = 777
'Public b6         'vba,声明跨过程/函数级的参数,必须在 过程/函数 外部声明,一般是最开始(理论上使用前声明就行,但放最前面最安全)
'     b6 = 777
     
     
End Function
'函数,无返回值
Private Function e1()
     d1 = 6
     
End Function
Public Function e2()
     d2 = 6
     
End Function


'在模块里试下,在form里试下,在workbook和sheet里试下
'然后再试下,能不能跨这几个
'VBA的一个BUG,修改函数,变量的声明范围后,比如去掉加上public 有时候,需要关掉重开,运行代码才会正常,还按老的,
'VBA,甚至跨模块调用时,赋值也有这种滞后的问题
'调用,常量,变量/函数
'call 过程/函数
Private Const a3 = 777
Private Const a4 = 778
Private b7
Public b8
Public Sub test01()
    b7 = 111
End Sub
Public Function test02()
    b8 = 222
End Function
Sub test001()
Debug.Print "调用常量" & "private 不跨模块,public可跨模块,取不到其他模块的private内容,a1只能识别为本模块的 过程级变量名"
Debug.Print "a1=" & a1
Debug.Print "a2=" & a2
Debug.Print "a3=" & a3
Debug.Print "a4=" & a4
Debug.Print
Debug.Print "调用其他函数过程里的变量" & "都不行,过程/函数 内部的内容()都是封装的,除非return拿到,否则只能靠声明变量拿到"
Debug.Print "b1=" & b1
Debug.Print "b2=" & b2
Debug.Print "b3=" & b3
Debug.Print "b4=" & b4
Debug.Print "b5=" & b5   '参数声明public还不够,还需要函数/过程也 public ?
Debug.Print "b6=" & b6
Debug.Print "b7=" & b7
Debug.Print "b8=" & b8
Debug.Print
Debug.Print "t1=" & t1
'Debug.Print "t2=" & t2    '过程名不能当 变量/函数 这样直接使用,只能call 调用?
                          '这样是变量,不是函数,但是无参数的不是默认自动去掉括号吗?
'Debug.Print "t2=" & t2()
'Call t1
Call t2
Debug.Print "f1=" & f1
Debug.Print "f2=" & f2
'Call f1
Call f2
Debug.Print "e1=" & e1
Debug.Print "e2=" & e2
'Call e1
Call e2
End Sub
'传递参数的几个思路
'存下来传递,存储,文件中,中转
'方法,按位置,按名称
'中转

如何用CSS实现漂亮的个人资料卡效果

英文 |

翻译 |web前端开发公众号

我们可以仅使用CSS为我们的网站做一些很棒的设计。在本文中,我将向你展示如何制作具有出色悬停效果的个人资料卡。

在开始之前,我们先来看一下最终效果。

接着,让我们正式开始吧。

文件结构

在我们的项目文件夹中,我们需要一个HTML文件,一个CSS文件和一个用于存储配置文件图像的文件夹。

HTML

首先,我们必须建立基本的html结构。让我们将以下代码放入index.html文件中。

data-lang="xml"><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"/>    <link rel="stylesheet" href="style.css">    <title>Awesome Profile Cardtitle>head><body>    <div class="card">        <div class="card-header">            <img src="img/profile-image-placeholder.jpg" alt="Profile Image" class="profile-img">        div>        <div class="card-body">            <p class="name">Your Namep>            <a href="#" class="mail">yourname@amail.coma>            <p class="job">Developer | Designerp>        div>
<div class="social-links"> <a href="#" class="fab fa-github social-icon">a> <a href="#" class="fab fa-twitter social-icon">a> <a href="#" class="fab fa-youtube social-icon">a> <a href="#" class="fab fa-linkedin social-icon">a> div>
<div class="card-footer"> <p class="count"><span>120kspan> Followers | <span>10kspan> Followingp> div> div>body>html>

我们需要将添加style.css到index.html。此外,我们还需要采用font-awesome链接社交图标。

接下来,我们需要为卡片添加CSS样式。从现在开始,我们将使用该style.css文件。

CSS

首先,我们将添加一些基本样式,这些样式将应用于所有地方。

* {    margin: 0;    padding: 0;    box-sizing: border-box;    text-decoration: none;    transition: 0.3s;}
body { font-family: "Montserrat"; background-color: #b8b6b6; color: #fdfdfd;}

没有CSS,卡将如下所示。

如果我们想把它变成漂亮一点的卡片,现在,我们需要为卡片添加背景颜色,字体大小,位置等样式属性。

.card {    max-width: 250px;    margin: 150px auto 0;    background-color: #42515a;    box-shadow: 0 10px 90px #00000024;    text-align: center;    font-size: 20px;    border-radius: 15px;}
.card .card-header { position: relative; height: 48px;}

个人资料图片

然后,我们将样式添加到个人资料图像。还有一些简单的悬停效果。

.card .card-header .profile-img {    width: 130px;    height: 130px;    border-radius: 1000px;    position: absolute;    left: 50%;    transform: translate(-50%, -50%);    border: 8px solid #c74385;    box-shadow: 0 0 20px #00000033;}
.card .card-header .profile-img:hover { width: 180px; height: 180px; border: 8px solid #d885af;}

现在,我们应该看到卡中的一些重大更改。它正在变成很酷的东西。

卡体设计

该card-body内容包含姓名,电子邮件和专业。我们将为每个样式添加不同的样式。当然还有一些悬停效果。

.card .card-body {    padding: 10px 40px;}
.card .card-body .name { margin-top: 30px; font-size: 22px; font-weight: bold; color: #c74385;}
.card .card-body .name:hover { margin-top: 30px; font-size: 24px; color: #d885af;}
.card .card-body .mail { font-size: 14px; color: #c2bdbd;}
.card .card-body .mail:hover { font-size: 16px; color: #ffffff;}
.card .card-body .job { margin-top: 10px; font-size: 14px;}

更改后,卡片样式如下图所示。

添加社交链接信息

现在,我们为卡片添加自定义社交链接。我们已经font-awesome在HTML中使用了图标。我们将使用CSS修改一下图标样式,让其变得更漂亮。

.card .social-links {    display: flex;    justify-content: center;    align-items: center;    margin-top: 30px;}
.card .social-links .social-icon { display: inline-flex; align-items: center; justify-content: center; height: 40px; width: 40px; background-color: #c74385; color: #ffffff; font-size: 20px; border-radius: 100%; text-decoration: none; margin: 0 13px 30px 0;}
.card .social-links .social-icon:last-child { margin-right: 0;}
.card .social-links .social-icon:hover { background-color: #d885af; height: 50px; width: 50px; text-decoration: none;}

查看图标的外观。

到这里,我们的卡片样式就快完成了。

最后,我们将在脚注中添加一些简单的CSS,就基本实现我们想要的效果了。

添加页脚样式

我们将对card-footer进行一些小的更改。

.card .card-footer {    background-color: #c74385;    border-bottom-left-radius: 15px;    border-bottom-right-radius: 15px;    padding: 20px 0 20px 0;}.card .card-footer .count {    font-size: 14px;}

修改完之后,我们得到了期望的卡片外观效果。

我们将通过一些媒体查询来完成我们的设计。

@media screen and (max-width: 575px) {    .card {        width: 96%;    }
.card .card-body { padding: 10px 20px; }}

在网站上使用此卡时,我们将根据自己需要,更改媒体查询。也许我们需要像这样的多张卡片。然后,我们将在网格系统中使用它们。这些卡在大,中,小屏幕上的外观如何,我们需要根据最终需求,进行样式的调整修改即可。

结论

希望我今天分享的内容,对你有所帮助。有什么问题,可以在留言区跟我留言交流。谢谢阅读。

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://news.xiuzhanwang.com/post/2972.html

发表评论

评论列表

还没有评论,快来说点什么吧~

友情链接: