目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
8 / 14 ページ ←次へ | 前へ→

【148】マイクロソフトISVって必要なの?
全般  無我夢中 E-MAIL  - 06/6/1(木) 12:04 -

引用なし
パスワード
   谷さん、ご無沙汰しています。
谷さんと一緒に前職を辞めてからそろそろ1年が経とうとしています。
インドオフショアの会社に就職はしましたが、どうも肌が合わず昨年の12月で
退職しました。
今は金融系のソフトウェアハウスで営業兼エンジニアの仕事をしています。
ところで、谷さんと皆さんに質問したい事があるのですがよろしいでしょうか。
今度私の会社でVBAを使えるアプリを販売していこうと考えているのですが、
その際にマイクロソフトのISVに加盟する事は必須なんでしょうか?
サイトで調べたのですがどうも金額面やセミナーなどのオプションなどの
記述があるのですがその点についてよく分かりませんでした。
何方がご存知または経験のある方がいましたらお教え願います。
・ツリー全体表示

【147】標準モジュールのコード
Excel  Jaka  - 06/5/22(月) 12:56 -

引用なし
パスワード
   全部いっしょに書き込もうとすると10000文字制限に引っかたので、標準モジュールのコードはこちらに書きます。

標準モジュール

Function HolidayTBL(Nen As Long, Tuki As Long) As Variant
  Dim FixHoliday As Variant, WekDy As Long
  Dim Anp As Variant, CagJan As Long, CagJul As Long, CagSep As Long
  Dim Equx39 As Long
  Select Case Tuki
   Case 1
     FixHoliday = Array(1)
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(0)) = 1 Then
      ReDim Preserve FixHoliday(1)
      FixHoliday(1) = Val(FixHoliday(0) + 1)
     End If
     ReDim Preserve FixHoliday(UBound(FixHoliday) + 1)
     FixHoliday(UBound(FixHoliday)) = Val(Hendo(Nen, Tuki, 2))
   Case 2
     FixHoliday = Array(11)
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(0)) = 1 Then
      ReDim Preserve FixHoliday(1)
      FixHoliday(1) = Val(FixHoliday(0) + 1)
     End If
   Case 3
     Equx39 = Fix(20.8431 + 0.242194 * (Nen - 1980) - Fix((Nen - 1980) / 4))
     FixHoliday = Array(Equx39)
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(0)) = 1 Then
      ReDim Preserve FixHoliday(1)
      FixHoliday(1) = Val(Equx39 + 1)
     End If
   Case 4
     FixHoliday = Array(29)
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(0)) = 1 Then
      ReDim Preserve FixHoliday(1)
      FixHoliday(1) = Val(FixHoliday(0) + 1)
     End If
   Case 5
     FixHoliday = Array(3, 4, 5)
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(2)) = 1 Then
      ReDim Preserve FixHoliday(UBound(FixHoliday) + 1)
      FixHoliday(UBound(FixHoliday)) = Val(FixHoliday(2) + 1)
     End If
   Case 7
     FixHoliday = Array(Val(Hendo(Nen, Tuki, 3)))
   Case 9
     FixHoliday = Array(Val(Hendo(Nen, Tuki, 3)))
     Equx39 = Fix(23.2488 + 0.242194 * (Nen - 1980) - Fix((Nen - 1980) / 4))
     ReDim Preserve FixHoliday(1)
     FixHoliday(1) = Equx39
     If Weekday(Nen & "/" & Tuki & "/" & Equx39) = 4 Then
      ReDim Preserve FixHoliday(UBound(FixHoliday) + 1)
      FixHoliday(UBound(FixHoliday)) = Val(Equx39 - 1)
     End If
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(1)) = 1 Then
      ReDim Preserve FixHoliday(UBound(FixHoliday) + 1)
      FixHoliday(UBound(FixHoliday)) = Val(Equx39 + 1)
     End If
   Case 10
     FixHoliday = Array(Val(Hendo(Nen, Tuki, 2)))
   Case 11
     FixHoliday = Array(3, 23)
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(0)) = 1 Then
      ReDim Preserve FixHoliday(UBound(FixHoliday) + 1)
      FixHoliday(UBound(FixHoliday)) = Val(FixHoliday(0) + 1)
     End If
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(1)) = 1 Then
      ReDim Preserve FixHoliday(UBound(FixHoliday) + 1)
      FixHoliday(UBound(FixHoliday)) = Val(FixHoliday(1) + 1)
     End If
   Case 12
     FixHoliday = Array(23)
     If Weekday(Nen & "/" & Tuki & "/" & FixHoliday(0)) = 1 Then
      ReDim Preserve FixHoliday(1)
      FixHoliday(1) = Val(FixHoliday(0) + 1)
     End If
   Case 6, 8
     FixHoliday = Array(0)
  End Select
  HolidayTBL = FixHoliday
  Erase FixHoliday
  DoEvents
End Function

Function ClendTBL(Nen As Long, Tuki As Long) As Variant
  Dim TBL(1 To 42) As Long, CT As Long, i As Long
  Dim StDay As Long, Edday As Long
  StDay = Weekday(Nen & "/" & Tuki & "/1")
  'Edday = Format(DateSerial(Nen, Tuki + i, 1) - 1, "d")
  Edday = Format(DateSerial(Nen, Tuki + 1, 0), "d")
  CT = 0
  For i = StDay To StDay - 1 + Edday
    CT = CT + 1
    TBL(i) = CT
  Next
  ClendTBL = TBL
  Erase TBL
End Function

Function Hendo(Nen As Long, Tuki As Long, SacWek As Long) As Long
  Dim HolSt As Long, WekDy As Integer
  WekDy = Weekday(Nen & "/" & Tuki & "/1", vbSunday)
  If WekDy <= 2 Then
    HolSt = 2 - WekDy + ((SacWek - 1) * 7) + 1
  Else
    HolSt = 8 - WekDy + ((SacWek - 1) * 7) + 2
  End If
  Hendo = HolSt
End Function
・ツリー全体表示

【146】カレンダーコントロールみたなような・・・...
Excel  Jaka  - 06/5/22(月) 12:55 -

引用なし
パスワード
   2003年以降からしか考えてないけど、カレンダーコントロールみたいな感じ?

フォーム(UserForm1)
クラス(Class1)
標準モジュール

を作って、各モジュールに下記コードをコピペ。
その後、フォームをShowすればいいです。(フォームShowのコードは自分で書いてください。)
フォーム上のコントロールは、自動で作ってくれます。

全部いっしょに書き込もうとすると10000文字制限に引っかたので、標準モジュールのコードは、この下に書きます。
ここは、フォームとクラスだけ。


フォームモジュール

Dim FMCls1() As New Class1
Dim FMCls2() As New Class1
Dim Cmb1 As New Class1
Dim Cmb2 As New Class1

Private Sub UserForm_Activate()
  Dim NwN As Date, Nwy As Long, NwM As Long
  Dim INDXY As Variant, INDXM As Variant
  NwN = Now()
  Nwy = Year(NwN)
  NwM = Month(NwN)
  INDXY = Application.Match(Nwy, Me.Controls("ComboBox1").List, 0)
  INDXM = Application.Match(NwM, Me.Controls("ComboBox2").List, 0)
  Me.Controls("ComboBox1").ListIndex = INDXY - 1
  Me.Controls("TextBox1").Value = 1
  Me.Controls("ComboBox2").ListIndex = INDXM - 1
End Sub

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  For i = 1 To UBound(FMCls1)
    Me.Controls("LabelB" & i).SpecialEffect = fmSpecialEffectFlat
  Next
End Sub

Private Sub UserForm_Initialize()
  Const BHei As Double = 15, BWid As Double = 17
  Const BBTp As Double = 15, BBLt As Double = 17
  Dim ComboBox1追加 As Control, ComboBox2追加 As Control
  Dim LabelTx追加 As Control, LabelB追加 As Control, TextBox1追加 As Control
  Dim i As Long, ii As Long, Youbi As Variant, FMCNT As Long
  Dim Btop As Double, BLft As Double, CT As Long

  Me.Top = 100
  Me.Left = 300
  Me.Width = 150
  Me.Height = 160
  Me.Caption = "カレンダー"
  Youbi = Array("日", "月", "火", "水", "木", "金", "土")

  Set ComboBox1追加 = Me.Controls.Add("Forms.ComboBox.1", "ComboBox1")
  Set Cmb1.ComboBox1ChangeEvent = ComboBox1追加
  With ComboBox1追加
    .Width = 60
    .Height = 17
    .Top = 3
    .Left = 13
    .List = Array(2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, _
           2011, 2012, 2013, 2014, 2015)
    .FontSize = 11
    .Font.Bold = True
    .Style = fmStyleDropDownList
  End With
  Set ComboBox2追加 = Me.Controls.Add("Forms.ComboBox.1", "ComboBox2")
  Set Cmb1.ComboBox2ChangeEvent = ComboBox2追加
  With ComboBox2追加
    .Width = 40
    .Height = 17
    .Top = 3
    .Left = 92
    .List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
    .FontSize = 11
    .Font.Bold = True
    .Style = fmStyleDropDownList
    .SetFocus
    .ListRows = 12
  End With

  Btop = 30
  For i = 1 To 7
    BLft = 13
    For ii = 1 To 7
      CT = CT + 1
      Set LabelB追加 = Me.Controls.Add("Forms.Label.1", "LabelB" & CT)
      With Me.Controls("LabelB" & CT)
        .Width = BWid
        .Height = BHei
        .Top = Btop
        .Left = BLft
        .Font.Name = "MS Pゴシック"
        .Font.Bold = True
        .TextAlign = 2
        .SpecialEffect = fmSpecialEffectFlat
        If i = 1 Then
          .Caption = Youbi(ii - 1)
          .FontSize = 10
        Else
          ReDim Preserve FMCls1(1 To CT)
          Set FMCls1(CT).LabelClickEvent = LabelB追加
          ReDim Preserve FMCls2(1 To CT)
          Set FMCls2(CT).LabelMoveEvent = LabelB追加
          .FontSize = 10
        End If
        If ii = 1 Then
          .ForeColor = &HFF&
        ElseIf ii = 7 Then
          .ForeColor = &HFF0000
        End If
      End With
      BLft = BLft + BBLt
    Next
    Btop = Btop + BHei
  Next

  Set TextBox1追加 = Me.Controls.Add("Forms.TextBox.1", "TextBox1")
  With TextBox1追加
    .Width = 5
    .Height = 5
    .Top = 0
    .Left = 0
    .Value = 0
    .FontSize = 5
    .Visible = False
  End With
  DoEvents
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  For i = 1 To UBound(FMCls1)
    Set FMCls1(i).LabelClickEvent = Nothing
    Set FMCls2(i).LabelMoveEvent = Nothing
  Next
End Sub

=================================
クラスモジュール(名前は、Class1)

Public WithEvents LabelClickEvent As MSForms.Label
Public WithEvents ComboBox1ChangeEvent As MSForms.ComboBox
Public WithEvents ComboBox2ChangeEvent As MSForms.ComboBox
Public WithEvents LabelMoveEvent As MSForms.Label

Private Sub LabelMoveEvent_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _
                   ByVal X As Single, ByVal Y As Single)
  LabelMoveEvent.SpecialEffect = fmSpecialEffectEtched
  For i = 8 To 49
    If LabelMoveEvent.Name <> "LabelB" & i Then
      UserForm1.Controls("LabelB" & i).SpecialEffect = fmSpecialEffectFlat
    End If
  Next
  DoEvents
End Sub

Private Sub LabelClickEvent_Click()
  Dim Conm As String, Nen As Long, Tuki As Long
  Conm = LabelClickEvent.Name
  With UserForm1
    .Controls(Conm).SpecialEffect = fmSpecialEffectSunken
    With .Controls("ComboBox1")
       If .ListIndex >= 0 Then
        Nen = .List(.ListIndex)
       End If
    End With
    With .Controls("ComboBox2")
       If .ListIndex >= 0 Then
        Tuki = .List(.ListIndex)
       End If
    End With
    MsgBox Format(Nen & "/" & Tuki & "/" & LabelClickEvent.Caption, _
           "ggge年m月d日 (aaa)"), , "選択した日付"
    .Controls(Conm).SpecialEffect = fmSpecialEffectEtched
  End With
End Sub

Private Sub ComboBox1ChangeEvent_Change()
  Dim Conm As String, Nen As Long, Tuki As Long, CT As Long
  Dim ClendHol As Variant, Clendday As Variant, i As Long
  Dim Nengetu As Date, WeekHantei As Variant
  Conm = ComboBox1ChangeEvent.Name
  With UserForm1
    If .Controls("TextBox1").Value <> "1" Then Exit Sub
    With .Controls("ComboBox1")
      Nen = .List(.ListIndex)
    End With
    With .Controls("ComboBox2")
      Tuki = .List(.ListIndex)
    End With
    ClendHol = HolidayTBL(Nen, Tuki)
    Clendday = ClendTBL(Nen, Tuki)
    CT = 0
    For i = 1 To 49
      If i > 7 Then
        CT = CT + 1
        With .Controls("LabelB" & i)
          .SpecialEffect = fmSpecialEffectFlat
          If Clendday(CT) <> "0" Then
           .Caption = Clendday(CT)
           .Enabled = True
           Nengetu = Nen & "/" & Tuki & "/" & Clendday(CT)
           WeekHantei = Application.Match(Clendday(CT), ClendHol, 0)
           If Weekday(Nengetu) = 1 Or Not IsError(WeekHantei) Then
             .ForeColor = &HFF&
           ElseIf Weekday(Nengetu) = 7 Then
             .ForeColor = &HFF0000
           Else
             .ForeColor = &H0&
           End If
           If Nengetu = Format(Now(), "yyyy/m/d") Then
             .SpecialEffect = fmSpecialEffectEtched
           End If
          Else
           .Caption = ""
           .Enabled = False
          End If
        End With
      End If
    Next
  End With
  Erase ClendHol, Clendday
  DoEvents
End Sub

Private Sub ComboBox2ChangeEvent_Change()
  Dim Nen As Long, Tuki As Long, i As Long, CT As Long
  Dim ClendHol As Variant, Clendday As Variant
  Dim Nengetu As String, WeekHantei As Variant
  With UserForm1
   If .Controls("TextBox1").Value <> "1" Then Exit Sub
   With .Controls("ComboBox1")
     Nen = .List(.ListIndex)
   End With
   With .Controls("ComboBox2")
     Tuki = .List(.ListIndex)
   End With
   ClendHol = HolidayTBL(Nen, Tuki)
   Clendday = ClendTBL(Nen, Tuki)
   CT = 0
   For i = 1 To 49
    If i > 7 Then
       CT = CT + 1
      With .Controls("LabelB" & i)
        .SpecialEffect = fmSpecialEffectFlat
        If Clendday(CT) <> "0" Then
         .Caption = Clendday(CT)
         .Enabled = True
         Nengetu = Nen & "/" & Tuki & "/" & Clendday(CT)
         WeekHantei = Application.Match(Clendday(CT), ClendHol, 0)
         If Weekday(Nengetu) = 1 Or Not IsError(WeekHantei) Then
          .ForeColor = &HFF&
         ElseIf Weekday(Nengetu) = 7 Then
          .ForeColor = &HFF0000
         Else
          .ForeColor = &H0&
         End If
         If Nengetu = Format(Now(), "yyyy/m/d") Then
          .SpecialEffect = fmSpecialEffectEtched
         End If
        Else
         .Caption = ""
         .Enabled = False
        End If
       End With
       DoEvents
    End If
   Next
  End With
  Erase ClendHol, Clendday
  DoEvents
End Sub
・ツリー全体表示

【145】文字列左にあるシングルクォーテーションの...
Excel  Jaka  - 06/5/9(火) 10:19 -

引用なし
パスワード
   簡単な説明
文字列にする時、文字の先頭に「'」をつけて文字列にする時があります。
(接頭辞と言うらしい。)
このシングルクォーテーションの文字を取得し有無を調べる時のコードです。

A列を調べる場合、

Sub TEST1()
  Dim WBN As String, Wsh As String
  WBN = "BOOK3.xls"  'ActiveWorkbook.Name
  Wsh = "Sheet2"   'ActiveSheet.Name
  For i = 1 To Range("A65536").End(xlUp).Row
   If ShgQot(WBN, Wsh, Cells(i, "A")) Then
     Cells(i, "B").Value = "接頭辞 有り"
   Else
     Cells(i, "B").Value = "接頭辞 無し"
   End If
  Next
End Sub

Function ShgQot(WbNm As String, ShNm As String, Cel As Range) As Boolean
  Dim RCAd As String, Mc4St As String, BkShN As String
  BkShN = "[" & WbNm & "]" & ShNm & "!"
  RCAd = Cel.Address(, , xlR1C1)
  Mc4St = "GET.CELL(52," & BkShN & RCAd & ")"
  If Application.ExecuteExcel4Macro(Mc4St) = "'" Then
   ShgQot = True
  Else
   ShgQot = False
  End If
End Function
・ツリー全体表示

【144】追伸
Excel  Jaka  - 06/3/15(水) 11:31 -

引用なし
パスワード
   後片付けのコードがろくに入ってませんから、追加しておいてください。

特にこれ、
>Sub テロップ流れ1_セル版()

文字数が多いからファイルサイズに影響がでます。
また、右寄せにしているので他のコードを続けて試すと、フリッカー時に右側によってしまいます。
セルに入力できる文字数に制限があるので、文字数が多い時はほどほどにするか途中で一旦クリアするようにしてください。

・ツリー全体表示

【143】テロップ
Excel  Jaka  - 06/3/13(月) 11:23 -

引用なし
パスワード
   お遊びですが、セル版テロップ。
(谷さん、ごめんなさい。)

気に食わない点を少々。
・文字数にあわせたセルのオートフィットの幅がビシっと決まらない。
・エクセルバージョンの違いで幅が違う。
・PCによってフォントが無い(他で代用される)から、余計に幅が決まらない。
・色の変化が解りづらい、にごって見える、残像が残る(数色の場合)。

(注意)
テロップの速度調整にAPIを使用していますから、
下記APIコードをモジュールの1番上に記載。
(全モジュール通して1個だけで良いです。)

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

***********************************************************
Sub テロップ流れ1_セル版()
  Dim st1 As String, SP1 As String, TX1 As String, Flg As Boolean
  Dim DefoFntIdx As Long, Defocol As Double, i As Long
  Dim MAd As String
  
  MAd = "B2"
  st1 = "シート内容に注意!!"
  SP1 = StrConv(Space(4), vbWide) '間隔
  
  '文字を1回1回ループさせようと思ったが、最初に作っておくのが簡単。
  For i = 1 To 6
    TX1 = TX1 & st1 & SP1
  Next

  TX1 = TX1 & StrConv(Space(Int(Len(st1) \ 2)), vbWide)
  With Range(MAd)
    .Value = ""
    If .Column > 1 Then
      If .Offset(, -1).Formula = "" Then
       .Offset(, -1).Value = Space(1)
       Flg = True
      End If
    End If
    DefoFntIdx = .Font.ColorIndex
    Defocol = .ColumnWidth
    With .Font
      .ColorIndex = 2
      .Name = "HG正楷書体-PRO"
      '.FontStyle = "メディウム 太字 斜体" 'PCによって無い。2002
      .Size = 20
      .Bold = True
      .Italic = True
    End With
    .HorizontalAlignment = xlRight
    .Value = StrConv(Right(st1, Len(st1) - 4), vbWide)
    .Columns.AutoFit
    FitCol = .ColumnWidth
    .ColumnWidth = FitCol
    .Value = ""
    .Font.ColorIndex = 3
    
    For i = 1 To Len(TX1)
      .Value = .Value & Mid(TX1, i, 1)
      Sleep 200
    Next
    
    .ColumnWidth = Defocol
    .Font.ColorIndex = DefoFntIdx
    .ClearContents
    If Flg Then
     .Offset(, -1).ClearContents
    End If
  End With
End Sub

*******************************************
Sub テロップ1色_セル版()
  St1 = "お読みください!!"
  SPS = 4
  MAd = "B2"
  With Range(MAd)
    .Value = ""
    DefoFntIdx = .Font.ColorIndex
    Defocol = .ColumnWidth

    With .Font
      .ColorIndex = 2
      .Name = "HG正楷書体-PRO"
      '.FontStyle = "メディウム 太字 斜体" 'PCによって無い。2002
      .Size = 20
      .Bold = True
      .Italic = True
      .ColorIndex = 3
    End With

    .Value = StrConv(Space(Len(St1) + SPS - 1), vbWide) & "あ"
    .Columns.AutoFit
    FitCol = .ColumnWidth
    .ColumnWidth = FitCol
    .Value = ""
    Tx1 = StrConv(Space(Len(St1) + SPS), vbWide)
    .Value = Tx1
    
    For CC = 1 To 3
      .Value = Left(Tx1, Len(Tx1) - 1) & Mid(St1, i + 1, 1)
      For i = 1 To Len(St1)
        Tx1 = Left(Tx1, Len(Tx1) - 1) & Mid(St1, i, 1)
        .Value = Tx1
        Sleep 200
        For ii = Len(Tx1) To i Step -1
          Tx1 = Left(Tx1, ii - 1) & Mid(St1, i, 1) & _
             StrConv(Space(Len(Tx1) - ii), vbWide)
          .Value = Tx1
          DoEvents
          Sleep 20
        Next
      Next
      Sleep 1200
    Next
    'フリッカー
    For iii = 1 To 5
      Sleep 400
      .Value = ""
      Sleep 400
      .Value = Trim(Tx1)
    Next
    .ColumnWidth = Defocol
    .Font.ColorIndex = DefoFntIdx
  End With
End Sub

*******************************************
'1=黒、2=白、3=赤、4=黄緑、5=青、6=黄、7=ピンク、8=水色、9=茶、10=緑
'11=濃紺、12=黄土色、13=濃紫、16=灰色50%、54=紫、41=淡い青  紫は茶色に見える。
'33=スカイブルー、46=オレンジ

*******************************************
Sub テロップ数色_セル版()
  Dim IroTb As Variant, ColorNo As Long, CLNo As Long, St1 As String
  Dim Defocol As Double, Tx1 As String, CC As Long, i As Long
  Dim SPS As Long, MAd As String
  IroTb = Array(1, 3, 5, 7, 33, 4, 3, 1)
  St1 = "お読みください!!"
  SPS = 4
  MAd = "B2"
  With Range(MAd)
    Defocol = .ColumnWidth
    With .Font
      .ColorIndex = 2
      .Name = "HG正楷書体-PRO"
      '.FontStyle = "メディウム 太字 斜体" 'PCによって無い。2002
      .Bold = True
      .Italic = True
    End With
    If Val(Application.Version) = 8 Then
      .Value = StrConv(Space(Len(St1) + SPS - 1), vbWide) & "あ"
    Else
      .Value = StrConv(Space(Len(St1) + SPS - 1), vbWide)
    End If
    .Columns.AutoFit
    FitCol = .ColumnWidth
    .ColumnWidth = FitCol
    .Value = ""
    .Font.ColorIndex = xlAutomatic
    Tx1 = StrConv(Space(Len(St1) + SPS), vbWide)
    .Value = Tx1
    For CC = 1 To UBound(IroTb) - 1 '3
      .Value = Left(Tx1, Len(Tx1) - 1) & Mid(St1, i + 1, 1)
      If i = Len(St1) + 1 Then
       CLNo = ColorNo - 1
      End If
      .Characters(Start:=Len(Tx1), Length:=1).Font.ColorIndex = IroTb(CLNo)
      DoEvents
      For i = 1 To Len(St1)
        If ColorNo >= UBound(IroTb) Then
         ColorNo = 0
        Else
         ColorNo = CC
        End If
      
        Tx1 = Left(Tx1, Len(Tx1) - 1) & Mid(St1, i, 1)
        .Value = Tx1
        .Characters(Start:=Len(Tx1), Length:=1).Font.ColorIndex = IroTb(ColorNo)
        Sleep 200 '150
      
        For ii = Len(Tx1) To i Step -1
          Tx1 = Left(Tx1, ii - 1) & Mid(St1, i, 1) & _
             StrConv(Space(Len(Tx1) - ii), vbWide)
          .Value = Tx1
          .Characters(Start:=ii, Length:=1).Font.ColorIndex = IroTb(ColorNo)
          DoEvents
          Sleep 30 'ここで、テロップ速度調整。
        Next
      Next
      Sleep 1200
    Next
    .ColumnWidth = Defocol
    'フリッカー
    For iii = 1 To 5
      Sleep 400
      .Value = ""
      Sleep 400
      .Value = Trim(Tx1)
    Next
  End With
End Sub
・ツリー全体表示

【142】飛び飛びセルのコピペ
Excel  Jaka  - 06/3/13(月) 11:16 -

引用なし
パスワード
   Ctrlを押しながら、飛び飛びに選択したセルを同ブックの別シートの同じ位置にコピペします。

尚、結合セルが混ざった場合、選択したセル範囲の1つに結合セルと、結合セル以外が混成した場合はエラーになります。
結合セルを単体で選択(1つの結合セルを1範囲と考えて)すれば大丈夫なようですが??...。

********************************
Sub 連続していないセルを別シートの同じ所にコピペ()
  Dim SelRg As Range, Rg As Range, ShName As Range
  Dim WbSt As String, ShSt As String, HidChkR As Long, HidChkC As Long

  HidChkR = Columns(1).SpecialCells(xlCellTypeVisible).Rows.Count
  HidChkC = Rows(1).SpecialCells(xlCellTypeVisible).Columns.Count
  If HidChkR <> Rows.Count Or HidChkC <> Columns.Count Then
   MsgBox "非表示セルには対応してません。", vbExclamation
   Exit Sub
  End If

  Set SelRg = Selection
  On Error Resume Next
  Set ShName = Application.InputBox(Prompt:="コピー先シートのセル(どこで良い)を選択して下さい。", _
              Title:="シートの選択", Type:=8)
  On Error GoTo 0
  If ShName Is Nothing Then
   MsgBox "キャンセル"
   Exit Sub
  End If
  Shad = ShName.Address(External:=True)
  Shad = Application.Substitute(Shad, "'", "")
  WbSt = Mid$(Shad, 2, InStr(1, Shad, "]") - 2)
  ShSt = Mid$(Shad, InStr(1, Shad, "]") + 1)
  ShSt = Left$(ShSt, InStr(1, ShSt, "!") - 1)

  Workbooks(WbSt).Activate
  Workbooks(WbSt).Sheets(ShSt).Activate
  Application.ScreenUpdating = False
  For Each Rg In SelRg.Areas
    Rg.Copy
    Workbooks(WbSt).Worksheets(ShSt).Range(Rg.Address).PasteSpecial
    '↓値だけ貼り付け。(選択したセル範囲の1つに結合セルと結合セル以外が混成した場合不可)
    'Sheets(ShSt).Range(Rg.Address).PasteSpecial (xlPasteValues)
    cnt = cnt + 1
  Next
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
  Set SelRg = Nothing
  MsgBox "終了 " & cnt
End Sub

********************************
Sub オートフィルタ用コピペ()
  Dim Rg As Range, ShName As Range, CpyCl As String
  Dim WbSt As String, ShSt As String, ShRow As Long
  Dim SelRw As Long, ShRw As Long, ShCl As Long, FilRgSt As String
  Dim ACBkNm As String, ACShNm As String, CNT As Long
  Dim KKct As Long

  If ActiveSheet.AutoFilterMode = False Then
   MsgBox "オートフィルタ用", vbExclamation
   Exit Sub
  End If

  ACBkNm = ActiveWorkbook.Name
  ACShNm = ActiveSheet.Name
  FilRgSt = Workbooks(ACBkNm).Sheets(ACShNm).AutoFilter.Range.Address(0, 0)

  With Workbooks(ACBkNm).Sheets(ACShNm).Range(FilRgSt)
    SelRw = .Resize(.Rows.Count - 1).Offset(1).Columns(1). _
        SpecialCells(xlCellTypeVisible).Row
  End With

  CpyCl = InputBox("フィルタ範囲の何列目をコピーしますか?", 1, 1)
  If CpyCl = "" Then
   MsgBox "キャンセル", vbInformation
   Exit Sub
  End If
  On Error Resume Next
  Set ShName = Application.InputBox(Prompt:="コピー先シートのセルを選択して下さい。", _
              Title:="シートの選択", Type:=8)
  On Error GoTo 0
  DoEvents
  'Workbooks(ACBkNm).Sheets(ACShNm).Select

  If ShName Is Nothing Then
   MsgBox "キャンセル", vbInformation
   Set ShName = Nothing
   Exit Sub
  ElseIf ShName.Count > 1 Then
   MsgBox "選択セルは1個だけ。", vbExclamation
   Set ShName = Nothing
   Exit Sub
  End If
  Shad = ShName.Address(External:=True)
  Shad = Application.Substitute(Shad, "'", "")
  KKct = InStr(1, Shad, "[") + 1
  WbSt = Mid$(Shad, KKct, InStr(1, Shad, "]") - KKct)
  ShSt = Mid$(Shad, InStr(1, Shad, "]") + 1)
  ShSt = Left$(ShSt, InStr(1, ShSt, "!") - 1)
  ShRw = ShName.Row
  PstRg = ShName.Address(0, 0)
  Workbooks(WbSt).Sheets(ShSt).Activate

  With Application
    If .Calculation = xlAutomatic Then
     .Calculation = xlManual
     CalFLG = True
    End If
    .ScreenUpdating = False
  End With
  With Workbooks(ACBkNm).Sheets(ACShNm).Range(FilRgSt)
    For Each Rg In .Resize(.Rows.Count - 1).Offset(1).Columns(1). _
            SpecialCells(xlCellTypeVisible).Areas
      OfsR = Rg.Row - SelRw
      Rg.Offset(, CpyCl - 1).Copy
      Range(PstRg).Offset(OfsR).Select
      Workbooks(WbSt).Worksheets(ShSt).Range(PstRg).Offset(OfsR).PasteSpecial (xlPasteValues)
      CNT = CNT + Rg.Rows.Count
    Next
  End With
  With Application
    .CutCopyMode = False
    .ScreenUpdating = True
    If CalFLG = True Then
     .Calculation = xlAutomatic
    End If
  End With
  Set ShName = Nothing
  MsgBox CNT & "件終了"
End Sub

*****************************
PS
MsgBox ActiveCell.Address
って、VBエディタ上から実行するとアドレスが取得できないときがあるんですね...。

MsgBox ActiveCell.Address(External:=True)
って、シート名の先頭に数字が付いている物と付いていない物とでは、アドレスの取得パターンが変わるんですね...。
先頭が数字だと、こんな感じにブックシート名の前後にシングルクォーテーションが付く。
'[Book1]5Sheet2'!$A$3

PCがいかれているのか解りませんが知らなかった....。
by Win98se & EXCEL2000SR-1
・ツリー全体表示

【141】石鹸箱、およびExcel質問箱の書き込みエラ...
全般  谷 誠之 E-MAIL  - 06/2/28(火) 23:17 -

引用なし
パスワード
   ponpon さん、小僧 さん、谷です。

ご指摘誠にありがとうございます。
書き込みできないことを確認し、復旧いたしました。

原因は、サイズが 0 のファイルが存在することにあります。
ログファイルがある一定のサイズを超えると、新しいログファイルを作成します。
ある書き込みが元で新しいログファイルが作成され、その書き込みが(次の書き込みが行われることを待たずして)削除されると、その新しいファイルのサイズが 0 バイトになります。そうなると、もう新しい書き込みをすることができなくなります。

これは、この 0 バイトのファイルを削除するしか復旧の方法がありません。
私は昼間仕事をしているので、どうしても作業が夜になってしまいます。
そのため、みなさんにはご迷惑をおかけいたしました。

今後とも、どうぞよろしくお願いいたします。
・ツリー全体表示

【140】Re:書き込みが・・
全般  小僧  - 06/2/28(火) 14:16 -

引用なし
パスワード
   ▼ponpon さん:
こんにちは。

>Excel質問箱などの書き込みができなくなっているようですが・・
>こちらはできるかな?

Access 質問箱の方は、
まさ7251さんが - 06/2/28(火) 13:55 の時刻で書き込まれていますね。

Excel の方は自分も書き込みエラーが発生しました。
報告までです。
・ツリー全体表示

【139】書き込みが・・
Excel  ponpon  - 06/2/28(火) 13:20 -

引用なし
パスワード
   Excel質問箱などの書き込みができなくなっているようですが・・
こちらはできるかな?
・ツリー全体表示

【138】祝日表作成時の振替休日について
Excel  Jaka  - 06/2/21(火) 13:50 -

引用なし
パスワード
   5/3の振替休日があるのか解らないけど(国民の休日とダブル)
ダブって書いてもMATCHやCOUNTIFで、エラーかどうかや0より大きいかどうかで判定させると思うので複数あっても問題はないと思います。

振替休日が発生する固定祝日は下記だけ見たいですから、
こんな感じに別セルに休日を追加してやればいいと思います。

=IF(WEEKDAY(A1)=1,A1+1,"")

--------------
元日     2006/01/01
建国記念の日 2006/02/11
春分の日   2006/03/21
みどりの日  2006/04/29
憲法記念日  2006/05/03
こどもの日  2006/05/05
秋分の日   2006/09/23
文化の日   2006/11/03
勤労感謝の日 2006/11/23
天皇誕生日  2006/12/23

(注)春分、秋分の日は、2006年の場合。
--------------

9月の国民の休日は、第3月曜と秋分の日が絡むだけ見たい?だから、
単純に秋分の日が水曜なら火曜が国民の休日といった単純発想でよければ、

=IF(WEEKDAY(秋分の日)=4,秋分の日-1,"")
・ツリー全体表示

【137】複数のコントロールのイベントを取得する
Access  小僧  - 06/2/7(火) 15:53 -

引用なし
パスワード
   みなさまこんにちは。

あまり使う機会はないかもしれませんが、
フォーム上に存在するコントロールのイベントをまとめて処理する方法です。
以下にテキストボックスを使用した例を挙げてみます。

'**********************************************************
'*        クラスモジュール CEvent         *
'**********************************************************
Option Compare Database
Option Explicit

Private WithEvents MyTextBox As ACCESS.TextBox

Public Property Set SetEvent(ByVal Obj As ACCESS.TextBox)
  Set MyTextBox = Obj
  MyTextBox.OnDblClick = "[Event Procedure]"
  MyTextBox.AfterUpdate = "[Event Procedure]"
  Set Obj = Nothing
End Property

Private Sub MyTextBox_AfterUpdate()
  MsgBox "更新後処理"
End Sub

Private Sub MyTextBox_DblClick(Cancel As Integer)
  MsgBox "ダブルクリック"
End Sub


上記コードをクラスモジュールに記載し、「CEvent」という名前で保存します。


'***********************************************************
'*           フォーム側処理           *
'***********************************************************

Option Compare Database
Option Explicit
Dim MyEvent() As CEvent

Private Sub Form_Load()
Dim Cntl As Control
Dim i As Long

  For Each Cntl In Me.Controls
    If Cntl.ControlType = acTextBox Then
      ReDim Preserve MyEvent(i)
      Set MyEvent(i) = New CEvent
      Set MyEvent(i).SetEvent = Cntl
      i = i + 1
    End If
  Next
End Sub

フォームの読み込み時の処理に上記を記載します。

フォーム上の全てのテキストボックスの「ダブルクリック時」「更新後処理」が
取得できていると思われます。
・ツリー全体表示

【136】Re:画像の表示
Excel  谷 誠之  - 06/1/22(日) 2:07 -

引用なし
パスワード
   VBA初心者さん、VBA質問箱の主宰者、谷です。

>画像の表示はどうやってするんですか?

誠におそれいりますが、当「目安箱」では質問をご遠慮いただいております。
Excel VBA に関する質問は、

http://www.vbalab.net/vbaqa/c-board.cgi?id=excel

にお願いします。
・ツリー全体表示

【135】画像の表示
Excel  VBA初心者  - 06/1/21(土) 12:13 -

引用なし
パスワード
   画像の表示はどうやってするんですか?
・ツリー全体表示

【134】Re:VB Excelの空欄の走査
Excel  谷 誠之  - 06/1/11(水) 0:28 -

引用なし
パスワード
   鐘本政和さん、こんにちは。
VBA質問箱の主宰者、谷です。

大変申し訳ありませんが、目安箱への質問はご遠慮いただいております。
Excel VBAの技術的なご質問は、「Excel質問箱」にお願いします。

http://www.vbalab.net/vbaqa/c-board.cgi?id=excel

ちなみに。

>2)もしそうだとすればExcel表の有効データ範囲を求める方法は
>  他に何かあるでしょうか?

Excelワークシートの「現在使われているセル範囲」を調べるためには、UsedRange というプロパティがあります。例えば「Sheet1」というワークシートの使用範囲を調べるには

  Worksheets("Sheet1").UsedRange

で調べれられます。詳細は、VBA の UsedRange プロパティのヘルプをごらんください。
 
・ツリー全体表示

【133】VB Excelの空欄の走査
Excel  鐘本政和 E-MAIL  - 06/1/10(火) 15:57 -

引用なし
パスワード
   VISUAL BASICを使って簡単なアプリソフトを作成しています。
別のアプリケーションで作られたExcelの表を読み込み、
自動的に有効データの範囲をチェックして行、列の最大値を求め、
このデータの中での最大値を求めるプログラムを作成したいと思っています。

有効データ範囲の行、列の最大値を求めるとき、セルの中身が""(ヌル)になるところが有効データの境目としてExcel表をスキャンするプログラムを作成してみましたが、有効データの値がゼロのところも""と同じようにみなされているようで、ゼロのデータが含まれているときはうまくいきません。

1)""とデータの0とは同じものとみなされるのでしょうか?
2)もしそうだとすればExcel表の有効データ範囲を求める方法は
  他に何かあるでしょうか?

この点につきどなたかご教示お願いします。
・ツリー全体表示

【132】参照設定の値を知る方法
Excel  kobasan  - 05/12/29(木) 12:28 -

引用なし
パスワード
   参照設定のFullPath,GUID,Major,Minorを知る方法。

小僧さんのコードで、Guid, Major, Minor の値の見つけ方が分からなかったので作ってみました。

参照設定の値を書き出す方法として
1.ツール/参照設定で追加したいものを手動で設定してから、「Output参照設定」を実行してください。

参照設定するコードとして。
2.FullPathで参照設定する場合は、SetAddFromFileを実行してください。
3.Guid, Major, Minorで参照設定する場合は、SetAddFromGuidを実行してください。

Option Explicit

Sub Output参照設定()
Dim i As Long, k As Long
Dim Flg As Boolean
Dim ary
  ActiveSheet.UsedRange.ClearContents
  MsgBox "Hit any key !!"
  ary = Array("No.", "Description", "Name", "FullPath", "GUID", _
        "Major", "Minor", "BuiltIn", "IsBroken")
  Cells(2, 1).Resize(1, UBound(ary) - 1).Value = ary
  With Application.VBE.ActiveVBProject.References
    For i = 1 To .Count
      Cells(i + 2, 1).Resize(1, UBound(ary) - 1).Value _
        = Array(i, _
        .Item(i).Description, _
        .Item(i).Name, _
        .Item(i).FullPath, _
        .Item(i).GUID, _
        .Item(i).Major, _
        .Item(i).Minor, _
        .Item(i).BuiltIn, _
        .Item(i).IsBroken)
    Next i
  End With
  Erase ary
End Sub

Sub SetAddFromFile()
Dim FromFile As String
  FromFile = "****************"  '<=======ここにFullPathを記入
  On Error Resume Next
  Application.VBE.ActiveVBProject.References.AddFromFile FromFile '参照設定
  On Error GoTo 0
End Sub

Sub SetAddFromGuid()
Dim FromGuid As String
Dim Majo As Long
Dim Mino As Long
  FromGuid = "****************" '<=========ここにGUIDを記入
  Majo = *    '<===========================ここにMajorを記入
  Mino = *    '<===========================ここにMinorを記入
  On Error Resume Next
  Application.References.AddFromGuid FromGuid, Majo, Mino '参照設定
  On Error GoTo 0
End Sub
・ツリー全体表示

【131】Re:PowerPointerに利用
全般  くるう  - 05/12/19(月) 12:58 -

引用なし
パスワード
    初心者さん、谷さん、こんにちは。
 目安箱でははじめて書き込みさせていただきます、くるうと申します。

 PowerPointでのVBA…確かにあまりネタがないですよね(汗)
 参考になるかどうかはわかりませんが、私はVBAを利用して、さまざまな大きさの角丸四角形の丸みなどを一括で調整できるようにしていますよ。Q&A掲示板でみなさまに教えていただいたことを参考にしてExcelで作ったのをPowerPoint用に移植しただけですが(^ー^;) それなりに便利に活用しています。
・ツリー全体表示

【130】Re:専門の内容とはかけ離れていたので・・・
Access  超初心者きよ  - 05/11/27(日) 3:33 -

引用なし
パスワード
   谷 誠之 さん
わかりました。ご返事が遅くなりましたがありがとうございます。
今後、何かわからないことなどありましたら、ご質問させて頂きます
ので、宜しくお願いいたします。

▼谷 誠之 さん:
>さん、VBA質問箱の主宰者、谷です。
>平素は質問箱をご愛顧いただきまして、ありがとうございます。
>
>>クエリ作成とマクロ記述では、かなりの違いがあるのでしょうか?
>>
>>基本的な質問で申し訳ございませんが、よろしくお願い致します。
>
>誠に申し訳ありませんが、「目安箱」は質問を目的とした投稿はご遠慮いただいています。上記のご質問は、Access質問箱にお願いします。
>
>ちなみに、マクロの「SQLの実行」アクションに書けるクエリは、アクション クエリでなければなりません。具体的には、テーブルを追加したり更新したりするクエリでなければなりません。つまり、SELECT文は書けない、というわけです。
>
>今後とも、どうぞよろしくお願いいたします。
・ツリー全体表示

【129】Re:専門の内容とはかけ離れていたので・・・
全般  谷 誠之  - 05/11/25(金) 21:32 -

引用なし
パスワード
   超初心者きよさん、VBA質問箱の主宰者、谷です。
平素は質問箱をご愛顧いただきまして、ありがとうございます。

>クエリ作成とマクロ記述では、かなりの違いがあるのでしょうか?
>
>基本的な質問で申し訳ございませんが、よろしくお願い致します。

誠に申し訳ありませんが、「目安箱」は質問を目的とした投稿はご遠慮いただいています。上記のご質問は、Access質問箱にお願いします。

ちなみに、マクロの「SQLの実行」アクションに書けるクエリは、アクション クエリでなければなりません。具体的には、テーブルを追加したり更新したりするクエリでなければなりません。つまり、SELECT文は書けない、というわけです。

今後とも、どうぞよろしくお願いいたします。
・ツリー全体表示

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
8 / 14 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free