整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          DTP控件+跟隨鼠標,VBA讓你的日期錄入變成日期選擇

          家好,我們今日繼續講解VBA代碼解決方案的第100講內容:使用DTP控件輸入日期。我們在錄入數據的時候經常會用到日期的錄入,往往會很繁瑣,有沒有好的辦法實現日期的錄入呢?今日就給大家講解這方面的知識。和大家分享VBA的知識已經很長的時間了,到這里已經是第三本書了。待有一定的機會會出書,讓大家看到一個實實在在的VBA,今日的講解用到的控件是DTP控件,是日期時間控件Microsoft Date and Time Picker Control 6.0,的簡稱。

          在工作表中單擊菜單"開發工具"→"插入"→"控件工具箱",選擇"其他控件"中的DTP控件如下圖所示,就可以在工作表中添加一個DTP控件。

          在設計模式下雙擊DTP控件寫入下面的代碼:

          Private Sub Worksheet_SelectionChange(ByVal Target As Range)

          With Me.DTPicker21

          If Target.Count = 1 And Target.Column = 2 And (Not Target.Row = 1) Or Target.MergeCells Then

          .Visible = True

          .Top = Selection.Top

          .Left = Selection.Left

          .Height = Selection.Height

          .Width = Selection.Width

          If Target.Cells(1, 1) <> "" Then

          .Value = Target.Cells(1, 1).Value

          Else

          .Value = Date

          End If

          Else

          .Visible = False

          End If

          End With

          End Sub

          Private Sub DTPicker21_CloseUp()

          ActiveCell.Value = Me.DTPicker21.Value

          Me.DTPicker21.Visible = False

          End Sub

          Private Sub Worksheet_Change(ByVal Target As Range)

          If Target.Count = 1 And Target.Column = 2 Or Target.MergeCells Then

          If Target.Cells(1, 1).Value = "" Then

          DTPicker21.Visible = False

          End If

          End If

          End Sub

          代碼截圖:

          代碼解析:

          第1行到第18行代碼工作表的SelectionChange事件,當選擇工作表的B列第2行以下的單個單元格時顯示日期控件供用戶選擇日期。

          其中第3行代碼設置顯示日期控件的觸發條件。只有當用戶選擇B列第2行以下單元格且只能選擇單個單元格時才顯示日期控件,Or Target.MergeCells這個條件是指合并單元格。

          第4行到第8行代碼顯示日期控件并設置日期控件的大小等于所選單元格的大小。

          第9行到第13行代碼,如果單元格已經輸入了日期,將單元格中的日期賦給日期控件,否則將當前日期賦給日期控件。

          第15行代碼如果選擇的是其他列則隱藏日期控件。

          第19行到第22行代碼日期控件的CloseUp事件,將日期控件的值賦給活動單元格后隱藏日期控件。

          第23行到第29行代碼工作表的Change事件,如果刪除了B列單元格的日期則隱藏日期控件。

          代碼的運行:

          選擇后的工作表:

          今日內容回向:

          1 本例的控件是什么?

          2 本例的控件是如何添加的?

          3 日期代碼的錄入是否能清楚了?

          TimeEdit簡介

          QTimeEdit繼承自QDateTimeEdit類,因此許多的特性和功能都由QDateTimeEdit類提供,它是一個用來編輯時間的控件(即編輯時,分,秒). QTimeEdit在語法上也可以設置彈出日歷,但是不起作用。

          創建QTimeEdit時,如果不設置時間,則系統會為其指定一個默認的時間:0時0分0秒。

          QTimeEdit類繼承關系:

          測試QTimeEdit

          創建文件qtimeedit.py, 要測試的信息和QDateTimeEdit類似,通過測試可以知道,有關日期的操作函數可以正常起作用。完整代碼如下:

          import sys
          from PyQt5 import QtCore, QtGui, QtWidgets
          from PyQt5.QtCore import QDate, QTime, QDateTime
          from PyQt5.QtWidgets import (QApplication, QWidget, QTimeEdit, 
                                       QPlainTextEdit, QPushButton, QVBoxLayout)
           
          class DemoTimeEdit(QWidget):
              def __init__(self, parent=None):
                  super(DemoTimeEdit, self).__init__(parent)       
                  
                  # 設置窗口標題
                  self.setWindowTitle('實戰PyQt5: QTimeEdit Demo!')      
                  # 設置窗口大小
                  self.resize(400, 300)
                  
                  self.initUi()
                  
              def initUi(self):
                  
                  #創建日期時間控件并設置顯示格式
                  self.dtEdit = QTimeEdit(self)
                  self.dtEdit.setDisplayFormat('HH:mm:ss')
                 
                  #設置日期的最大與最小值,在當前日期上,前后大約偏移10年
                  self.dtEdit.setMinimumDate(QDate.currentDate().addDays(-3652))
                  self.dtEdit.setMaximumDate(QDate.currentDate().addDays(3652))
                  
                  self.dtEdit.setTime(QTime.currentTime())
                 
                  #時間改變時觸發
                  self.dtEdit.timeChanged.connect(self.onTimeChanged)
                  
                  #創建按鈕,點擊按鈕,獲取當前日期和時間
                  self.btnDateTimeInfo = QPushButton('日期時間信息')
                  self.btnDateTimeInfo.clicked.connect(self.onButtonDateTimeClicked)
                  
                  #創建信息顯示區域
                  self.textShower = QPlainTextEdit(self)
                  self.textShower.setReadOnly(True)
                  
                  vLayout = QVBoxLayout(self)
                  vLayout.setSpacing(10)
                  vLayout.addWidget(self.dtEdit)
                  vLayout.addWidget(self.btnDateTimeInfo)
                  vLayout.addWidget(self.textShower)
                  
                  self.setLayout(vLayout)
              
              def onTimeChanged(self, time):
                  self.showInfo(time.toString('hh:mm:ss'))
              
              def onButtonDateTimeClicked(self):
                  #日期時間
                  dateTime = self.dtEdit.dateTime()
                  #最大日期
                  maxDate = self.dtEdit.maximumDate()
                  #最大日期時間
                  maxDateTime = self.dtEdit.maximumDateTime()
                  #最大時間
                  maxTime = self.dtEdit.maximumTime()
                  #最小日期
                  minDate = self.dtEdit.minimumDate()
                  #最小日期時間 
                  minDateTime = self.dtEdit.minimumDateTime()
                  #最小時間
                  minTime = self.dtEdit.minimumTime()
                  
                  self.showInfo('日期和時間信息')
                  self.showInfo('日期時間為: ' + dateTime.toString('yyyy:MM:dd [ddd] hh:mm:ss'))
                  self.showInfo('最小日期為: ' + minDate.toString('yyyy:MM:dd [ddd]'))
                  self.showInfo('最大日期為: ' + maxDate.toString('yyyy:MM:dd [ddd]'))
                  self.showInfo('最小時間為: ' + minTime.toString('hh:mm:ss'))
                  self.showInfo('最大時間為: ' + maxTime.toString('hh:mm:ss'))
                  self.showInfo('最小日期時間為: ' + minDateTime.toString('yyyy:MM:dd [ddd] hh:mm:ss'))
                  self.showInfo('最大日期時間為: ' + maxDateTime.toString('yyyy:MM:dd [ddd] hh:mm:ss'))
              
              def showInfo(self, strInfo:str):
                  #print(strInfo)
                  self.textShower.appendPlainText(strInfo)
                  
          if __name__ == '__main__':
              app = QApplication(sys.argv)
              window = DemoTimeEdit()
              window.show()
              sys.exit(app.exec()) 

          運行結果如下圖:

          測試QTimeEdit

          本文知識點

          • QTimeEdit繼承自QDateTimeEdit,用于編輯時間。

          喜歡本文內容就收藏,點贊,評論,關注和轉發。

          WinForms中,DateTimePicker 控件用于讓用戶選擇日期和時間。以下是如何使用 DateTimePicker 控件的一些基本信息和示例代碼:

          創建和設置 DateTimePicker 控件

          1. 添加 DateTimePicker 控件:在 Visual Studio 的工具箱中找到 DateTimePicker 控件,并將其拖放到窗體上。
          2. 設置 Value 屬性:您可以通過設置 DateTimePicker 的 Value 屬性來指定一個默認的日期和時間。
          datetimePicker1.Value = DateTime.Now;
          
          1. 格式化顯示的日期和時間:您可以通過設置 Format 屬性來控制顯示的日期和時間格式。
          datetimePicker1.Format = DateTimePickerFormat.Short;
          
          1. 啟用時間選擇:通過設置 ShowUpDown 屬性為 true,用戶可以使用上下箭頭來選擇時間。
          datetimePicker1.ShowUpDown = true;
          

          事件處理

          • ValueChanged 事件:當用戶選擇的日期和時間發生變化時,會觸發此事件。
          • CloseUp 事件:當用戶關閉 DateTimePicker 控件時,會觸發此事件。

          示例代碼

          以下是一個簡單的示例,演示如何在窗體加載時設置 DateTimePicker 控件的一些基本屬性,并處理 ValueChanged 事件:

          public partial class MainForm : Form
          {
              public MainForm()
              {
                  InitializeComponent();
          
                  // 設置 DateTimePicker 的默認值為當前日期和時間
                  datetimePicker1.Value = DateTime.Now;
          
                  // 設置日期格式為短格式(例如,"MM/dd/yyyy")
                  datetimePicker1.Format = DateTimePickerFormat.Short;
          
                  // 啟用時間選擇
                  datetimePicker1.ShowUpDown = true;
          
                  // 添加 ValueChanged 事件處理程序
                  datetimePicker1.ValueChanged += new EventHandler(datetimePicker1_ValueChanged);
              }
          
              private void datetimePicker1_ValueChanged(object sender, EventArgs e)
              {
                  // 當用戶選擇的日期和時間發生變化時,執行此方法
                  DateTime selectedDate = datetimePicker1.Value;
                  // 在這里添加您的代碼,例如更新 UI 或記錄日志
              }
          }
          

          在這個示例中,我們首先設置了 DateTimePicker 控件的默認值、日期格式和時間選擇的啟用狀態。然后,我們為 ValueChanged 事件添加了一個處理程序,當用戶選擇的日期和時間發生變化時,該處理程序會被調用。在處理程序中,您可以根據需要執行任何邏輯,例如更新 UI 或將選定的日期和時間存儲到變量中。

          通過這些基本步驟,您可以在 WinForms 應用程序中輕松地使用 DateTimePicker 控件來讓用戶選擇日期和時間。


          主站蜘蛛池模板: 欧美日本精品一区二区三区| 国产伦理一区二区| 亚洲制服中文字幕第一区| 97久久精品无码一区二区天美| 日韩一区二区三区在线精品| 91秒拍国产福利一区| 一区二区三区四区视频在线| 日本一区二区三区不卡视频| 亚洲熟妇av一区二区三区| 鲁大师成人一区二区三区| 久久精品一区二区国产| 国产一区二区三区播放心情潘金莲| 九九久久99综合一区二区| 免费萌白酱国产一区二区| 成人免费一区二区无码视频| 91成人爽a毛片一区二区| 亚洲熟女一区二区三区| 精品无码人妻一区二区三区不卡| 怡红院AV一区二区三区| 中文字幕乱码亚洲精品一区| 末成年女AV片一区二区| 久久精品亚洲一区二区| 国产亚洲自拍一区| 肥臀熟女一区二区三区 | 精品一区二区三区| 亚洲av成人一区二区三区在线播放 | 精品综合一区二区三区| 国产精品乱码一区二区三| 亚洲AV日韩综合一区尤物| 在线中文字幕一区| 精品成人乱色一区二区| 亚洲天堂一区二区三区四区| 精品女同一区二区三区免费站| 性无码一区二区三区在线观看| 国产在线观看91精品一区| 精品亚洲AV无码一区二区三区| 精品成人一区二区三区免费视频| 久久久久女教师免费一区| 波多野结衣av高清一区二区三区| 亚洲欧美国产国产一区二区三区| 一区二区三区四区精品视频|