熟年の確かな技術と自由な発想
アフィリエイト広告を利用しています |
★ 私はこの様に
|
Office2013の 画面でご説明いたします メール (フリーメール不可)での お問い合わせに Testしてから お知らせ致します 印刷プレビューで 必要ページ印刷して下さい PCご質問 ![]() (フリーメール不可) |
★Excel・Word等の「マクロ」 「VBA」使用時の準備 ★金種別ユーザー定義関数 の作成(Excel) ★Excel 2010-2013 郵便番号⇔住所を生成する方法 ★Tweets等のアイコンの整理 |
★Excel・Word等の「マクロ」「VBA」使用時の準備 まず、マクロやVBAを 難しく考えないことです 現在のExcel・Wordは簡単に 使用できる様に作られていますし 間違った場合はエラー表示、 メッセージが表示されますので、 慌てずメッセージ内容を よく読んで下さい 又、構文内で理解しにくい場合は カーソルを合わせてキー「F1」を 押せばヘルプが表示されます 両方共同じですので、Excelで説明いたします 1・空のExcelを開き名付けて 保存しましょう ファイルの種類で 「Excelマクロ有効ブック」 (通常は.xlsxですが、 ここでは.xlsm)」で保存します。
「標準モジュール」を クリックして作成された 「Module1」をクリック 表示された標準モジュールに 構文を書きます。 上部に表示される 「Option Explicit」は削除 |
![]() ![]() |
★金種別ユーザー定義関数の作成(Excel) Excelでよく使う式、使用内容に合わせてご自分で関数を作成してみましょう。 ここでは営業マン等の交通費、通信費等の清算時に発生する金種別枚数合計を簡単に出せる関数作成をご紹介致します。 まずは「標準モジュール」を作成の要領でModuleを開く 関数一覧ユーザー定義内に表示させるにはFunction プロシージャを使用してVBAを作成します。 1・開いたシートに下図、ここでは二千円札は除き、B・G・H列は使用します 下クリックして表示後「Function」から「End Function」迄をコピーして貼り付けて下さい。 ----------------------------------- |
Function 金種別(金種 As Integer, 合計範囲 As Range) As Double '↑「金種別」が関数一覧ユーザー定義内に表示されます '↓は変数の定義、理解しやすく日本語表示しています Dim 列 As Integer Dim 行 As Integer Dim 計 As Integer Dim 合計 As Integer '↓この変数はスタートは0値に 計 = 0 合計 = 0 '↓は列番を調べる 列 = Range(合計範囲.Address).Column '↓数値「2」は「合計範囲」の金額入力されている初行番に入れ替える(ここでは2行目からですので「2」) For 行 = 2 To 合計範囲.End(xlDown).Row '列「合計範囲」の金額入力最終行番 Select Case 金種 Case 10000 計 = Int(Cells(行, 列).Value / 金種) Case 5000 計 = Int(Right(Cells(行, 列).Value, 4) / 金種) Case 1000 計 = Int((Right(Cells(行, 列).Value, 4) - (Int(Right(Cells(行, 列).Value, 4) / 5000) * 5000)) / 金種) Case 500 計 = Int(Right(Cells(行, 列).Value, 3) / 金種) Case 100 計 = Int((Right(Cells(行, 列).Value, 3) - (Int(Right(Cells(行, 列).Value, 3) / 500) * 500)) / 金種) Case 50 計 = Int(Right(Cells(行, 列).Value, 2) / 金種) Case 10 計 = Int((Right(Cells(行, 列).Value, 2) - (Int(Right(Cells(行, 列).Value, 2) / 50) * 50)) / 金種) Case 5 計 = Int(Right(Cells(行, 列).Value, 1) / 金種) Case 1 計 = Int((Right(Cells(行, 列).Value, 1) - (Int(Right(Cells(行, 列).Value, 1) / 5) * 5)) / 金種) End Select 合計 = 合計 + 計 Next 金種別 = 合計 End Function |
----------------------------------- 2・貼り付けが終わりましたら「保存」ボタンで保存して閉じる 3・シートの「H2」を選択 4・タブ「数式」→「関数の挿入」クリック 5・表示された関数の挿入の「関数の分類」で「ユーザー定義」を選択すると関数名に保存された関数「金種別」が表示されますので、選択「OK」で下図表示 金種にセル「G2」を選択、合計範囲に列範囲でもいいのですが、ここでは件数が増えてもいいように列「B:B」を選択、「OK」をクリック 8・「H2」をコピーして「H10」まで貼り付ける 9・テストしてみましょう「B」列に金額を入れてみましょう 枚数にエラーが出なければ以上で完了です。 Function プロシージャを開いて、グリーン色の部分は構文の説明です。変数等は解りやすく日本語にしていますので、参考にして頂き、新たなにあなただけの関数作成にお役立て下さい。 |
![]() ![]() |
★Excel 2010-2013 郵便番号⇔住所を生成する方法 まずは単独、次に一気に生成する方法を記載します 単独:郵便番号から住所生成 1・Excelを開きPC画面の右下文字変換(IME)文字を右クリック→追加辞書サービス→辞書の設定→Microsoft IMEの詳細設定→[辞書/学習]タブで、郵便番号辞書のチェックONを確認する 2・Excelシート「A」列を選択、マウス右クリックで「セルの書式設定」で「教示形式」→「その他」→「郵便番号」選択で「OK」をクリック 3・「B」列を選択、マウス右クリックで「セルの書式設定」で「教示形式」→「文字列」選択で「OK」をクリック 4・セル「A2」に下記式を入力 =ASC(LEFT(PHONETIC(B1),8)) ![]() 5・セル「B2」に「-」ファイフォン付き郵便番号を入力→キー「変換」で左図のように表示住所を選択→「Enter」で完了 郵便番号⇔住所生成 1・郵便番号変換ウィザードを仮使用できる様にします 2016/1/28現在はExcel 2010以降のExcel アドイン: 郵便番号変換ウィザードは発表されていません(発表されましたら切り替えて下さい) 2・郵便番号変換ウィザードを利用する間の仮フォルダを作成して下さい (説明では「仮郵便番号」フォルダとします) 3・Microsoftサイト下記よりExcel アドインをダウンロード名付けて保存で 「仮郵便番号」フォルダに保存して下さい Excel アドイン: 郵便番号変換ウィザード (2000-2007 ユーザー用) 「仮郵便番号」フォルダを開き「zipcode7.exe」の保存を確認して下さい 4・PC画面の左下「スタート」ボタン右クリックで 「ファイル名を指定して実行」を選択 5・「ファイル名を指定して実行」画面の「参照」をクリックして「仮郵便番号」フォルダ内の「zipcode7.exe」を選択→「開く」 6・「ファイル名を指定して実行」画面の名前に表示されたアドレス前後に「Shift+2」でダブルクォーテーションを入力 7・\zipcode7.exe"の後ろに「/c」を入力 下図参照 8・「ファイル名を指定して実行」画面の「OK」で「このアプリがPCに変更を加えることを許可しますか?」を「はい」→「Microsoft Excel郵便番号変換ウィザード」使用許諾契約の画面は「はい」→「Microsoft Excel郵便番号変換ウィザード」「展開されたファイルを保存する場所を指定してください。」の「参照」で「仮郵便番号」フォルダを選択して「OK」 9・「仮郵便番号」フォルダ内の「ZIPCODE7.XLA」ファイルが保存されているかを確認 10・Excelを開き「ファイル」→「オプション」→「アドイン」→ 下段の「設定」ボタンをクリック 11・アドイン画面の「参照」→「仮郵便番号」フォルダ内の 「ZIPCODE7.XLA」ファイルを選択→「OK」 12・アドイン画面の「郵便番号変換ウィザード」にチェック入を確認→「OK」 13・シート「A」列を選択、マウス右クリックで「セルの書式設定」で 「教示形式」→「その他」→「郵便番号」選択で「OK」をクリック 14・「B」列を選択、マウス右クリックで「セルの書式設定」で「教示形式」→「文字列」選択で「OK」をクリック 15・ここでは「住所」から「郵便番号」生成を記載します 16・セル「B2」以下列に住所を値貼り付けをして下さい 17・タブ「アドイン」→[ウィザード]→[郵便番号変換]→「住所から郵便番号を生成する」を選択→「次へ」 左図 18・「住所データのセルの範囲」&「郵便番号を出力するセル範囲」を選択 下図 19・郵便番号「-」ファイフォン付を出力す場合は上図の書式を 「文字列」にする 20・「次へ」→「完了」で「A」列に郵便番号が出力されて完了です |
![]() ![]() |
★Tweets等のアイコンの整理 最終更新日:2020/8/10 ここでは、Tweetsアイコンの整理について紹介いたします。 (Google Chrome・Microsoft EdgeのTweets通知画面でテスト済です) 1・まずは「アイコン整理」(変更可)「Excelマクロ有効ブック」を作成して 標準モジュール挿入して下さい(参照⇒「VBA」使用時の準備) 2・各シートを用途に合わせてシートを作成します 標準モジュールに下「クリックで構文を表示」で 「Sub シート追加()」から最下段の「End Sub」まで全コピー 標準モジュールに貼り付けて下さい。 ----------------------------------- |
Sub シート追加() 'ワークシートを末尾(右端)に追加する Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "アイコン整理" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "当日RT" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "当日いいね" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "前日RT" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "前日いいね" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "RT" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "いいね" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "仮画像" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "仮シート" Worksheets.Add(After:=Worksheets(Worksheets.Count)) _ .Name = "クリック確認" Application.DisplayAlerts = False ' メッセージを非表示 Sheets("Sheet1").Delete Application.DisplayAlerts = True ' メッセージを表示 Call アイコン整理セット End Sub Sub アイコン整理セット() Sheets("アイコン整理").Select ActiveSheet.Tab.Color = 255 ActiveSheet.Rows("1:5").RowHeight = 27 '行高さ ActiveSheet.Columns("A:D").ColumnWidth = 18.5 '列幅 ActiveSheet.Rows("2").RowHeight = 54 '行高さ ActiveSheet.Columns("A").ColumnWidth = 3 '列幅 ActiveSheet.Columns("E").ColumnWidth = 23.38 '列幅 Range("B2").Interior.ColorIndex = 14 Range("B2").Value = "整理ボタン" Range("B2").Font.ColorIndex = 2 Range("B2").HorizontalAlignment = xlCenter Range("B2").VerticalAlignment = xlCenter Range("B2").Font.Bold = True Range("B3").Value = "自分のアカウント名⇒" Range("B5").Value = "整理する日付⇒" Range("B3,B5").HorizontalAlignment = xlRight Range("C7").Value = "以外は全て前日シートに張り付けます" Range("C6,C7").HorizontalAlignment = xlRight Range("C3").Interior.Color = 65535 Range("C3").NumberFormatLocal = "@" Range("C5").Interior.Color = 16751103 Range("C5").NumberFormatLocal = "yyyy/m/d" Range("C5").HorizontalAlignment = xlCenter ActiveSheet.Range("C5").Font.Size = 18 ActiveSheet.Range("C5").Font.Bold = True Range("C6").Select ActiveCell.FormulaR1C1 = "この日が当日シートの貼り付けられます↑" With ActiveCell.Characters(Start:=19, Length:=1).Font .FontStyle = "太字" .Color = -16776961 End With Range("D2").Interior.Color = 255 Range("D2").Value = "整理まとめ" Range("D2").HorizontalAlignment = xlCenter Range("D2").VerticalAlignment = xlCenter Range("D2").Font.Bold = True Range("D3:D5").Select With Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlBottom .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With ActiveCell.FormulaR1C1 = "↑整理まとめが" & Chr(10) & "終るまで" & Chr(10) & "←変更しない " With ActiveCell.Characters(Start:=1, Length:=1).Font .FontStyle = "太字" .Size = 18 .Color = -16776961 End With With ActiveCell.Characters(Start:=14, Length:=1).Font .FontStyle = "太字" .Size = 18 .Color = -16776961 End With Range("E2:E5").Select With Selection .HorizontalAlignment = xlLeft .VerticalAlignment = xlTop .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With ActiveCell.FormulaR1C1 = _ "まとめは毎日" & Chr(10) & "Twitterスタート前して下さい" & Chr(10) & "また、毎月一日には" & Chr(10) & "一ヶ月以上" & Chr(10) & "交流のないアカウントは" & Chr(10) & "「クリック確認」シートから" & Chr(10) & "削除します" Call クリック確認セット End Sub Sub クリック確認セット() Sheets("クリック確認").Select ActiveSheet.Rows("1:1").RowHeight = 27 ActiveSheet.Columns("A:C").ColumnWidth = 12.88 ActiveSheet.Columns("E").ColumnWidth = 12.88 ActiveSheet.Columns("L:N").ColumnWidth = 12.88 ActiveSheet.Columns("P").ColumnWidth = 12.88 ActiveSheet.Columns("B").NumberFormatLocal = "@" ActiveSheet.Columns("M").NumberFormatLocal = "@" ActiveSheet.Columns("C").NumberFormatLocal = "yyyy/mm/dd" ActiveSheet.Columns("E").NumberFormatLocal = "yyyy/mm/dd" ActiveSheet.Columns("N").NumberFormatLocal = "yyyy/mm/dd" ActiveSheet.Columns("P").NumberFormatLocal = "yyyy/mm/dd" ActiveSheet.Columns("D").ColumnWidth = 7 ActiveSheet.Columns("F:H").ColumnWidth = 7 ActiveSheet.Columns("O").ColumnWidth = 7 ActiveSheet.Columns("Q:S").ColumnWidth = 7 ActiveSheet.Columns("D").NumberFormatLocal = "#,##0_ " ActiveSheet.Columns("F:H").NumberFormatLocal = "#,##0_ " ActiveSheet.Columns("O").NumberFormatLocal = "#,##0_ " ActiveSheet.Columns("Q:S").NumberFormatLocal = "#,##0_ " ActiveSheet.Rows("1:1").NumberFormatLocal = "G/標準" ActiveSheet.Rows("1:1").HorizontalAlignment = xlCenter ActiveSheet.Range("K1").HorizontalAlignment = xlRight Range("A1:B1").Select With Selection.Interior .ThemeColor = xlThemeColorAccent5 .TintAndShade = 0.399975585192419 End With Columns("C").Select With Selection.Interior .Color = 65535 .TintAndShade = 0 End With Range("D1,G1,H1").Select With Selection.Interior .Color = 65535 .TintAndShade = 0 End With Columns("E").Select With Selection.Interior .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.599993896298105 End With Range("F1").Select With Selection.Interior .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.599993896298105 End With Range("A1").Value = "HTML" Range("B1").Value = "Account" Range("C1").Value = "RT日付" Range("E1").Value = "いいね日付" Range("K1").Value = "当月1日処理前のデータ⇒" Range("D1").Select ActiveCell.FormulaR1C1 = "RT" & Chr(10) & "合計" Range("F1").Select ActiveCell.FormulaR1C1 = "いいね" & Chr(10) & "合計" Range("G1").Select ActiveCell.FormulaR1C1 = "RT" & Chr(10) & "総計" Range("H1").Select ActiveCell.FormulaR1C1 = "いいね" & Chr(10) & "総計" Call 他シートセット End Sub Sub 他シートセット() Sheets("当日RT").Select With ActiveWorkbook.Sheets("当日RT").Tab .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.499984740745262 End With ActiveSheet.Rows().RowHeight = 27 ActiveSheet.Columns("A:J").ColumnWidth = 3.92 ActiveSheet.Columns("A:J").NumberFormatLocal = "@" ActiveSheet.Columns("A:J").Font.Size = 18 ActiveSheet.Columns("A:J").Font.Bold = True Sheets("当日いいね").Select With ActiveWorkbook.Sheets("当日いいね").Tab .ThemeColor = xlThemeColorAccent2 .TintAndShade = -0.249977111117893 End With ActiveSheet.Rows().RowHeight = 27 ActiveSheet.Columns("A:J").ColumnWidth = 3.92 ActiveSheet.Columns("A:J").NumberFormatLocal = "@" ActiveSheet.Columns("A:J").Font.Size = 18 ActiveSheet.Columns("A:J").Font.Bold = True Sheets("前日RT").Select With ActiveWorkbook.Sheets("前日RT").Tab .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.399975585192419 End With ActiveSheet.Rows().RowHeight = 27 ActiveSheet.Columns("A:J").ColumnWidth = 3.92 ActiveSheet.Columns("A:J").NumberFormatLocal = "@" ActiveSheet.Columns("A:J").Font.Size = 18 ActiveSheet.Columns("A:J").Font.Bold = True Sheets("前日いいね").Select With ActiveWorkbook.Sheets("前日いいね").Tab .ThemeColor = xlThemeColorAccent2 .TintAndShade = 0.399975585192419 End With ActiveSheet.Rows().RowHeight = 27 ActiveSheet.Columns("A:J").ColumnWidth = 3.92 ActiveSheet.Columns("A:J").NumberFormatLocal = "@" ActiveSheet.Columns("A:J").Font.Size = 18 ActiveSheet.Columns("A:J").Font.Bold = True Sheets("RT").Select ActiveSheet.Rows().RowHeight = 27 ActiveSheet.Columns("A:J").ColumnWidth = 3.92 ActiveSheet.Columns("A:J").NumberFormatLocal = "@" ActiveSheet.Columns("A:J").Font.Size = 18 ActiveSheet.Columns("A:J").Font.Bold = True Sheets("いいね").Select ActiveSheet.Rows().RowHeight = 27 ActiveSheet.Columns("A:J").ColumnWidth = 3.92 ActiveSheet.Columns("A:J").NumberFormatLocal = "@" ActiveSheet.Columns("A:J").Font.Size = 18 ActiveSheet.Columns("A:J").Font.Bold = True Sheets("仮画像").Select ActiveSheet.Rows().RowHeight = 27 ActiveSheet.Columns("A").ColumnWidth = 10 ActiveSheet.Columns("B:D").ColumnWidth = 3.92 ActiveSheet.Columns("B:F").NumberFormatLocal = "@" ActiveSheet.Columns("B:D").Font.Size = 18 ActiveSheet.Columns("B:D").Font.Bold = True End Sub |
----------------------------------- 貼付け後、Excelを保存ボタンで保存します クリックで左図表示 4・一覧から 「シート追加」を選択します マクロ名が「シート追加」確認 5・横の「実行」ボタンを クリックして下さい 一機にシートが作成されますので 完了(下図)するまでお待ちください |
|
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim zkad As String zkad = Selection.Rows.Address() If zkad = "$B$2" Then Call アイコン整理01 ElseIf zkad = "$D$2" Then Call 前日RT整理 End If End Sub |
----------------------------------- 8・「整理ボタン」ようの 標準モジュール挿入して下さい(参照⇒「VBA」使用時の準備) 「Module2」に下「クリックで構文を表示」で 「Option Explicit」から最下段の「End Function」まで全コピー 「Module2」に貼り付けて下さい ----------------------------------- |
Option Explicit Dim zki As Long, zkiL As Long, zkRows As Long, zkRows1 As Long, zkRows2 As Long Dim zkColumn As Long, zkColumn1 As Long, zkDayH As Long Dim zkDate As Variant, zkDate1 As Variant Dim zkAccount As String, zkUAccount As String, zkSheetN As String Dim zksh As Shape, zkwsheet As Worksheet Dim zkFoundCell As Range Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'タイム 'SendKeysキーで起きる-NUMLOCKをONにする Private Declare Sub keybd_event Lib "user32" _ (ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Declare Function GetKeyboardState Lib "user32" _ (pbKeyState As Byte) As Long Const VK_NUMLOCK = &H90 Const VK_SCROLL = &H91 Const VK_CAPITAL = &H14 Const KEYEVENTF_EXTENDEDKEY = &H1 Const KEYEVENTF_KEYUP = &H2 Sub アイコン整理01() zkDate = Application.ClipboardFormats If zkDate(1) = True Then MsgBox "コピーデータは空です。", 48 Sheets("アイコン整理").Select Range("A2").Select End End If If IMEStatus <> vbIMEModeOff Then 'IMEがひらがなだったら半角英数に切り替える SendKeys "%{kanji}" End If Call NUMLOCKをONにする 'SendKeysでNUMLOCKがOFFになるので Sleep (100) zki = 0 p1: zkDate = Application.InputBox( _ "アイコン貼付け先を入力してください。" & Chr(13) & _ "「RT」は 1" & Chr(13) & _ "「いいね」は 2 です。", Left:="30", Top:="10", Type:=1) '数値で受けます Default:=2 If TypeName(zkDate) = "Boolean" Then Sheets("仮画像").Select If ActiveSheet.Shapes.Count > 0 Then ActiveSheet.DrawingObjects.Select Selection.Delete End If Sheets("アイコン整理").Select Range("A2").Select End '以後中止 ElseIf zkDate > 2 Then zki = zki + 1 If zki = 3 Then MsgBox "三回ミスしましたので終了します。", vbExclamation Sheets("仮画像").Select If ActiveSheet.Shapes.Count > 0 Then ActiveSheet.DrawingObjects.Select Selection.Delete End If Sheets("アイコン整理").Select Range("A2").Select End '以後中止 Else MsgBox "「RT」は 1、「いいね」は 2 で入力して下さい。", vbExclamation GoTo p1 'p1:の構文まで戻ります End If End If zki = 0 p2: zkDate1 = Application.InputBox( _ "「日にち」だけを入力してください。", Type:=1, Left:="30", Top:="50") '数値で受けます If TypeName(zkDate1) = "Boolean" Then Sheets("仮画像").Select If ActiveSheet.Shapes.Count > 0 Then ActiveSheet.DrawingObjects.Select Selection.Delete End If Sheets("アイコン整理").Select Range("A2").Select End '以後中止 ElseIf zkDate1 > 31 Then zki = zki + 1 If zki = 3 Then MsgBox "三回ミスしましたので終了します。", vbExclamation Sheets("仮画像").Select If ActiveSheet.Shapes.Count > 0 Then ActiveSheet.DrawingObjects.Select Selection.Delete End If Sheets("アイコン整理").Select Range("A2").Select End '以後中止 Else MsgBox "6/12場合は 12 だけを入力して下さい。", vbExclamation GoTo p2 'p2:の構文まで戻ります End If End If Application.ScreenUpdating = False '画面更新を停止する Sheets("仮画像").Select Range("A2").Select ActiveSheet.Paste DoEvents Sleep (500) '(500) DoEvents Columns("A").Select Selection.ClearContents '不要な画像を削除。Microsoft Edge・Google Chromeで確認済みです。 With Worksheets("仮画像") For zki = .Shapes.Count To 1 Step -1 If .Shapes(zki).Width = 24 Then .Shapes(zki).Delete '画像のWidth 24を削除 Next zki End With Sheets("仮画像").Select If ActiveSheet.Shapes.Count = 0 Then MsgBox "アイコンのコピーが有りません1。", 48 Columns("A").Select Selection.ClearContents Sheets("アイコン整理").Select Range("A2").Select Application.ScreenUpdating = True '画面更新を許可する End '画像がなければ終了 End If Sheets("仮画像").Select '画像の大きさ調整 ActiveSheet.DrawingObjects.Select Selection.ShapeRange.Height = 26 Range("A1").Select Call アイコン整理02 End Sub Sub アイコン整理02() Sheets("仮画像").Select If ActiveSheet.Shapes.Count > 0 Then Columns("F").Select Selection.ClearContents Range("F1").Select Set zkwsheet = ActiveSheet On Error Resume Next 'エラー無視で次のステートメントに進む For Each zksh In zkwsheet.Shapes If zksh.Type = msoPicture Then If zksh.Hyperlink.Address = "" Then zksh.Delete '画像にハイパーリンク無削除 End If Next On Error GoTo 0 End If zkRows = 2 Sheets("仮画像").Select If ActiveSheet.Shapes.Count > 0 Then Columns("F").Select Selection.ClearContents Range("F1").Select Set zkwsheet = ActiveSheet On Error Resume Next 'エラー無視で次のステートメントに進む For Each zksh In zkwsheet.Shapes If zksh.Type = msoPicture Then zksh.Name = Mid(zksh.Hyperlink.Address, 21) '画像に名前を付ける If Sheets("仮画像").Range("F" & zkRows - 1).Value = zksh.Name Then zksh.Delete 'ダブった画像を削除 Else Sheets("仮画像").Range("F" & zkRows).Value = zksh.Name '画像名を書き出す zkRows = zkRows + 1 End If End If Next On Error GoTo 0 End If Call アイコン整理03 End Sub Sub アイコン整理03() Sheets("アイコン整理").Select zkAccount = Range("C3").Value zki = Len(zkAccount) zkRows = 2 Do Sheets("仮画像").Select If Mid(Range("F" & zkRows).Value, 1, zki) = zkAccount Then 'アカウト名が有る画像名を削除する zkUAccount = Range("F" & zkRows).Value On Error Resume Next 'エラー無視で次のステートメントに進む Sheets("仮画像").Select Range("A1").Select ActiveSheet.Shapes(zkUAccount).Select '自分の画像が混ざっていないか確認 If Err.Number = 0 Then Selection.Name = zkUAccount Selection.Delete '自分の画像を削除する End If On Error GoTo 0 Range("F" & zkRows).Select Selection.Delete Shift:=xlUp zkRows = zkRows - 1 End If zkRows = zkRows + 1 Loop Until Sheets("仮画像").Range("F" & zkRows).Value = "" zkRows = 2 Do Sheets("仮画像").Select If Len(Range("F" & zkRows).Value) > 15 Then 'アカウト名が15文字以上の場合削除 zkAccount = Range("F" & zkRows).Value On Error Resume Next 'エラー無視で次のステートメントに進む Sheets("仮画像").Select Range("A1").Select ActiveSheet.Shapes(zkAccount).Select 'アカウト名が15文字以上の画像が混ざっていないか確認 If Err.Number = 0 Then Selection.Name = zkAccount Selection.Delete '画像を削除する End If On Error GoTo 0 Range("F" & zkRows).Select Selection.Delete Shift:=xlUp zkRows = zkRows - 1 End If zkRows = zkRows + 1 Loop Until Sheets("仮画像").Range("F" & zkRows).Value = "" Sheets("仮画像").Select If ActiveSheet.Shapes.Count > 30 Then MsgBox "アイコンのコピーが「30アカウント」を超えました。" & Chr(13) & _ "再度、20以内のコピーして下さい。", 48 ActiveSheet.DrawingObjects.Select Selection.Delete Columns("A:D").Select Selection.ClearContents Range("F1").Select Sheets("アイコン整理").Select Range("A2").Select Application.ScreenUpdating = True '画面更新を許可する End '画像がなければ終了 End If Call アイコン整理04 End Sub Sub アイコン整理04() zkDayH = Day(Sheets("アイコン整理").Range("C5").Value) '整理する日 zkSheetN = "" If zkDate = 1 Then '「RT」「いいね」を区別 If zkDate1 = zkDayH Then '「本日RT」「前日RT」を区別してシート名を決める zkSheetN = "当日RT" Else zkSheetN = "前日RT" End If Else If zkDate1 = zkDayH Then '「本日いいね」「前日いいね」を区別してシート名を決める zkSheetN = "当日いいね" Else zkSheetN = "前日いいね" End If End If Sheets("仮画像").Select If Range("F2").Value = "" Then MsgBox "整理するアイコンが有りません。" Sheets("アイコン整理").Select Range("A1").Select Application.ScreenUpdating = True '画面更新を許可する End '画像名の書き出しが無ければ終了 Else If zkDate1 = zkDayH Then zkRows = 2 Do Sheets("仮画像").Select zkAccount = Range("F" & zkRows).Value On Error Resume Next 'エラー無視で次のステートメントに進む Sheets(zkSheetN).Select '★ Range("A1").Select ActiveSheet.Shapes(zkAccount).Select If Err.Number = 0 Then Sheets("仮画像").Select '★ Range("A1").Select ActiveSheet.Shapes(zkAccount).Select Selection.Delete 'アイコン削除 End If On Error GoTo 0 zkRows = zkRows + 1 Loop Until Sheets("仮画像").Range("F" & zkRows).Value = "" End If End If Sheets("仮画像").Select zkRows = 2 zkRows1 = 2 zkColumn = 2 Do zkAccount = Range("F" & zkRows).Value On Error Resume Next 'エラー無視で次のステートメントに進む ActiveSheet.Shapes(zkAccount).Select If Err.Number = 0 Then Selection.Name = zkAccount Selection.Cut '切り取り Sheets("仮画像").Select 'シートB~D列に並べる Cells(zkRows1, zkColumn).Value = "G" Cells(zkRows1, zkColumn).Select ActiveSheet.Paste Application.CutCopyMode = False If zkRows1 = 11 Then zkColumn = zkColumn + 1 zkRows1 = 2 Else zkRows1 = zkRows1 + 1 End If End If On Error GoTo 0 zkRows = zkRows + 1 Loop Until Sheets("仮画像").Range("F" & zkRows).Value = "" Range("A1").Select Sheets(zkSheetN).Select '画像追加シート On Error Resume Next 'エラー無視で次のステートメントに進む For zki = 1 To 5 Range("A1").Select Set zkFoundCell = Cells.Find(What:=zkDate1, LookAt:=xlWhole) If zkFoundCell Is Nothing Then Exit For Else zkFoundCell.Select Selection.Delete Shift:=xlUp '前の入力日を削除 Sleep (500) End If Next zki On Error GoTo 0 For zkiL = 1 To 3 Sheets("仮画像").Select '画像元シート If ActiveSheet.Shapes.Count = 0 Then '画像の有無確認 Exit For Else Sheets(zkSheetN).Select '画像追加シート zkRows = 0 zkRows1 = 500 '行最大値(1行10画像) zkColumn = 1 For zki = 10 To 1 Step -1 '10列目から逆に画像貼り付け位置確認 zkRows = Cells(Rows.Count, zki).End(xlUp).Row If zkRows1 > zkRows Then zkRows1 = zkRows + 1 zkColumn = zki End If Next zki Sheets("仮画像").Select '画像元シート Range(Cells(2, zkiL + 1), Cells(11, zkiL + 1)).Select Selection.Cut '切り取り Sheets(zkSheetN).Select '画像追加シート Cells(zkRows1, zkColumn).Value = zkDate1 '日にちを入力 Cells(zkRows1 + 1, zkColumn).Select ActiveSheet.Paste Application.CutCopyMode = False If zkiL = 1 Then '最初の画像貼り付け位置 zkRows2 = zkRows1 zkColumn1 = zkColumn End If End If Next zkiL Sheets("アイコン整理").Select Range("A2").Select On Error Resume Next 'エラー無視で次のステートメントに進む Sheets(zkSheetN).Select Cells(zkRows2, zkColumn1).Select On Error GoTo 0 ThisWorkbook.Save Sleep (2000) Application.ScreenUpdating = True '画面更新を許可する End Sub Function NUMLOCKをONにする() Dim NumLockState As Boolean Dim keys(0 To 255) As Byte GetKeyboardState keys(0) NumLockState = keys(VK_NUMLOCK) If NumLockState <> True Then 'オフであれば強制的にオンにする keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0 keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0 End If End Function |
----------------------------------- 9・「整理まとめ」ようの 標準モジュール挿入して下さい(参照⇒「VBA」使用時の準備) 「Module3」に下「クリックで構文を表示」で 「Option Explicit」から最下段の「End Sub」まで全コピー 「Module3」に貼り付けて下さい ----------------------------------- |
Option Explicit Dim zki As Long, zkiL As Long, zkRows As Long, zkRows1 As Long, zkRows2 As Long, zkRowsL As Long Dim zkColumn As Long, zkColumn1 As Long, zkmsg As Long, zkDayH As Long, zkDayZ As Long Dim zkDate As Variant, zkDate1 As Variant, zkDate2 As Variant, zkDate3 As Variant Dim zkAccount As String, zkUAccount As String, zkSheetN As String Dim zksh As Shape, zkwsheet As Worksheet Dim zkFoundCell As Range Sub 前日RT整理() zkDate = CDate(Sheets("アイコン整理").Range("C5").Value) '基準日付 zkDayH = Day(zkDate) '基準日にち zkSheetN = "前日RT" '一番目に整理するシート Sheets("仮シート").Select Columns("A:B").Select Selection.ClearContents Range("A1").Select Sheets(zkSheetN).Select Range("A1").Select If ActiveSheet.Shapes.Count > 0 Then Set zkwsheet = ActiveSheet '画像の名前とハイパーリンクを書き出す On Error Resume Next 'エラー無視で次のステートメントに進む For Each zksh In zkwsheet.Shapes Sheets("仮シート").Range("A65536").End(xlUp).Offset(1) = zksh.Hyperlink.Address Sheets("仮シート").Range("B65536").End(xlUp).Offset(1) = zksh.Name Next On Error GoTo 0 Sheets("仮シート").Select If Sheets("仮シート").Range("A1").Value = "" Then Rows("1:1").Select Selection.Delete Shift:=xlUp End If Sheets("仮シート").Select Range("A1").Select Selection.CurrentRegion.Select zkRowsL = Selection.Rows.Count Sheets("仮シート").Select 'この構文は前日分にのみ「L」まで Worksheets("仮シート").Range("A1:B" & zkRowsL) _ .Sort Key1:=Range("B1"), order1:=xlAscending 'xlDescending は 降順に並べ替えます zkRows = 2 Do 'ダブっているアカウトを一つにする If Cells(zkRows - 1, 2).Value = Cells(zkRows, 2).Value Then Rows(zkRows & ":" & zkRows).Select Selection.Delete Shift:=xlUp zkRows = zkRows - 1 End If zkRows = zkRows + 1 Loop Until Cells(zkRows, 1) = "" End If If Sheets("仮シート").Range("B1").Value <> "" Then zkRows = 1 zkRows1 = 0 Do Sheets("クリック確認").Select Range("B1").Select zkRowsL = Cells(Rows.Count, 2).End(xlUp).Row + 1 zkAccount = Sheets("仮シート").Range("B" & zkRows).Value Sheets("クリック確認").Select Range("B1").Select Set zkFoundCell = Range("B:B").Find(What:=zkAccount) 'アカウント検索 If zkFoundCell Is Nothing Then 'アカウント検索の有無 Sheets("クリック確認").Select Range("A" & zkRowsL).Value = Sheets("仮シート").Range("A" & zkRows).Value Range("B" & zkRowsL).Value = Sheets("仮シート").Range("B" & zkRows).Value Range("C" & zkRowsL).Value = zkDate - 1 Range("D" & zkRowsL).Value = 1 Else zkFoundCell.Activate zkRows1 = ActiveCell.Row If Range("C" & zkRows1).Value < zkDate - 1 Then Range("C" & zkRows1).Value = zkDate - 1 Range("D" & zkRows1).Value = Range("D" & zkRows1).Value + 1 End If End If zkRows = zkRows + 1 Loop Until Sheets("仮シート").Range("B" & zkRows).Value = "" End If Call 前日いいね整理 End Sub Sub 前日いいね整理() zkDate = CDate(Sheets("アイコン整理").Range("C5").Value) '基準日付 zkDayH = Day(zkDate) '基準日にち zkSheetN = "前日いいね" '二番目に整理するシート Sheets("仮シート").Select Columns("A:B").Select Selection.ClearContents Range("A1").Select Sheets(zkSheetN).Select Range("A1").Select If ActiveSheet.Shapes.Count > 0 Then Set zkwsheet = ActiveSheet '画像の有無、無い場合は以後構文を終了する On Error Resume Next 'エラー無視で次のステートメントに進む For Each zksh In zkwsheet.Shapes Sheets("仮シート").Range("A65536").End(xlUp).Offset(1) = zksh.Hyperlink.Address Sheets("仮シート").Range("B65536").End(xlUp).Offset(1) = zksh.Name Next On Error GoTo 0 Sheets("仮シート").Select If Sheets("仮シート").Range("A1").Value = "" Then Rows("1:1").Select Selection.Delete Shift:=xlUp End If Sheets("仮シート").Select Range("A1").Select Selection.CurrentRegion.Select zkRowsL = Selection.Rows.Count Sheets("仮シート").Select 'この構文は前日分にのみ「L」まで Worksheets("仮シート").Range("A1:B" & zkRowsL) _ .Sort Key1:=Range("B1"), order1:=xlAscending 'xlDescending は 降順に並べ替えます zkRows = 2 Do 'ダブっているアカウトを一つにする If Cells(zkRows - 1, 2).Value = Cells(zkRows, 2).Value Then Rows(zkRows & ":" & zkRows).Select Selection.Delete Shift:=xlUp zkRows = zkRows - 1 End If zkRows = zkRows + 1 Loop Until Cells(zkRows, 1) = "" End If If Sheets("仮シート").Range("B1").Value <> "" Then zkRows = 1 zkRows1 = 0 Do Sheets("クリック確認").Select Range("B1").Select zkRowsL = Cells(Rows.Count, 2).End(xlUp).Row + 1 zkAccount = Sheets("仮シート").Range("B" & zkRows).Value Sheets("クリック確認").Select Range("B1").Select Set zkFoundCell = Range("B:B").Find(What:=zkAccount) 'アカウント検索 If zkFoundCell Is Nothing Then 'アカウント検索の有無 Sheets("クリック確認").Select Range("A" & zkRowsL).Value = Sheets("仮シート").Range("A" & zkRows).Value Range("B" & zkRowsL).Value = Sheets("仮シート").Range("B" & zkRows).Value Range("E" & zkRowsL).Value = zkDate - 1 Range("F" & zkRowsL).Value = 1 Else zkFoundCell.Activate zkRows1 = ActiveCell.Row If Range("E" & zkRows1).Value < zkDate - 1 Then Range("E" & zkRows1).Value = zkDate - 1 Range("F" & zkRows1).Value = Range("D" & zkRows1).Value + 1 End If End If zkRows = zkRows + 1 Loop Until Sheets("仮シート").Range("B" & zkRows).Value = "" End If Call 月初め End Sub Sub 月初め() 'この処理はExcelを出来るだけ軽くするための処理です '毎月1日のまとめ時に一ヶ月以前のデータを削除して「RT計]と「いいね計」を総合計に加算し、計を0にする zkDate = Format(CDate(Sheets("アイコン整理").Range("C5").Value), "d") '基準日付 zkDate1 = DateAdd("m", -1, Date) If zkDate = 1 Then Sheets("クリック確認").Select Columns("A:H").Select Selection.Copy Range("L1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1").Select Application.CutCopyMode = False zkRows = 2 Do Sheets("クリック確認").Select If CDbl(Range("C" & zkRows).Value) < zkDate1 Then If CDbl(Range("E" & zkRows).Value) < zkDate1 Then Rows(zkRows & ":" & zkRows).Select Selection.Delete Shift:=xlUp zkRows = zkRows - 1 End If End If zkRows = zkRows + 1 Loop Until Sheets("クリック確認").Range("A" & zkRows).Value = "" zkRows = 2 Do Sheets("クリック確認").Range("G" & zkRows).Value = Sheets("クリック確認").Range("G" & zkRows).Value + Sheets("クリック確認").Range("D" & zkRows).Value Sheets("クリック確認").Range("H" & zkRows).Value = Sheets("クリック確認").Range("H" & zkRows).Value + Sheets("クリック確認").Range("F" & zkRows).Value Sheets("クリック確認").Range("D" & zkRows).Value = "" Sheets("クリック確認").Range("F" & zkRows).Value = "" zkRows = zkRows + 1 Loop Until Sheets("クリック確認").Range("A" & zkRows).Value = "" End If Sheets("クリック確認").Select Range("A1").Select Call 当日RT整理 End Sub Sub 当日RT整理() zkDate = CDate(Sheets("アイコン整理").Range("C5").Value) '基準日付 zkDayH = Day(zkDate) '基準日にち zkSheetN = "当日RT" '三番目に整理するシート Sheets("仮シート").Select Columns("A:B").Select Selection.ClearContents Range("A1").Select Sheets(zkSheetN).Select Range("A1").Select If ActiveSheet.Shapes.Count > 0 Then Set zkwsheet = ActiveSheet '画像の有無、無い場合は以後構文を終了する On Error Resume Next 'エラー無視で次のステートメントに進む For Each zksh In zkwsheet.Shapes Sheets("仮シート").Range("A65536").End(xlUp).Offset(1) = zksh.Hyperlink.Address Sheets("仮シート").Range("B65536").End(xlUp).Offset(1) = zksh.Name Next On Error GoTo 0 Sheets("仮シート").Select If Sheets("仮シート").Range("A1").Value = "" Then Rows("1:1").Select Selection.Delete Shift:=xlUp End If End If If Sheets("仮シート").Range("B1").Value <> "" Then zkRows = 1 zkRows1 = 0 Do Sheets("クリック確認").Select Range("B1").Select zkRowsL = Cells(Rows.Count, 2).End(xlUp).Row + 1 zkAccount = Sheets("仮シート").Range("B" & zkRows).Value Sheets("クリック確認").Select Range("B1").Select Set zkFoundCell = Range("B:B").Find(What:=zkAccount) 'アカウント検索 If zkFoundCell Is Nothing Then 'アカウント検索の有無 Sheets("クリック確認").Select Range("A" & zkRowsL).Value = Sheets("仮シート").Range("A" & zkRows).Value Range("B" & zkRowsL).Value = Sheets("仮シート").Range("B" & zkRows).Value Range("C" & zkRowsL).Value = zkDate Range("D" & zkRowsL).Value = 1 Else zkFoundCell.Activate zkRows1 = ActiveCell.Row Range("C" & zkRows1).Value = zkDate Range("D" & zkRows1).Value = Range("D" & zkRows1).Value + 1 End If zkRows = zkRows + 1 Loop Until Sheets("仮シート").Range("B" & zkRows).Value = "" End If Call 当日いいね整理 End Sub Sub 当日いいね整理() Application.ScreenUpdating = False '画面更新を停止する zkDate = CDate(Sheets("アイコン整理").Range("C5").Value) '基準日付 zkDayH = Day(zkDate) '基準日にち zkSheetN = "当日いいね" '四番目に整理するシート Sheets("仮シート").Select Columns("A:B").Select Selection.ClearContents Range("A1").Select Sheets(zkSheetN).Select Range("A1").Select If ActiveSheet.Shapes.Count > 0 Then Set zkwsheet = ActiveSheet '画像の有無、無い場合は以後構文を終了する On Error Resume Next 'エラー無視で次のステートメントに進む For Each zksh In zkwsheet.Shapes Sheets("仮シート").Range("A65536").End(xlUp).Offset(1) = zksh.Hyperlink.Address Sheets("仮シート").Range("B65536").End(xlUp).Offset(1) = zksh.Name Next On Error GoTo 0 Sheets("仮シート").Select If Sheets("仮シート").Range("A1").Value = "" Then Rows("1:1").Select Selection.Delete Shift:=xlUp End If End If If Sheets("仮シート").Range("B1").Value <> "" Then zkRows = 1 zkRows1 = 0 Do Sheets("クリック確認").Select Range("B1").Select zkRowsL = Cells(Rows.Count, 2).End(xlUp).Row + 1 zkAccount = Sheets("仮シート").Range("B" & zkRows).Value Sheets("クリック確認").Select Range("B1").Select Set zkFoundCell = Range("B:B").Find(What:=zkAccount) 'アカウント検索 If zkFoundCell Is Nothing Then 'アカウント検索の有無 Sheets("クリック確認").Select Range("A" & zkRowsL).Value = Sheets("仮シート").Range("A" & zkRows).Value Range("B" & zkRowsL).Value = Sheets("仮シート").Range("B" & zkRows).Value Range("E" & zkRowsL).Value = zkDate Range("F" & zkRowsL).Value = 1 Else zkFoundCell.Activate zkRows1 = ActiveCell.Row Range("E" & zkRows1).Value = zkDate Range("F" & zkRows1).Value = Range("F" & zkRows1).Value + 1 End If zkRows = zkRows + 1 Loop Until Sheets("仮シート").Range("B" & zkRows).Value = "" End If Sheets("仮シート").Select Columns("A:B").Select Selection.ClearContents Sheets("クリック確認").Select 'データを並び替える Range("A1").Select Selection.CurrentRegion.Select zkRowsL = Selection.Rows.Count ActiveWorkbook.Worksheets("クリック確認").Sort.SortFields.Clear ActiveWorkbook.Worksheets("クリック確認").Sort.SortFields.Add Key:=Range("C2:C" & zkRowsL _ ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("クリック確認").Sort.SortFields.Add Key:=Range("D2:D" & zkRowsL _ ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("クリック確認").Sort.SortFields.Add Key:=Range("E2:E" & zkRowsL _ ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("クリック確認").Sort.SortFields.Add Key:=Range("F2:F" & zkRowsL _ ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("クリック確認").Sort .SetRange Range("A1:H" & zkRowsL) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Sheets("クリック確認").Select With ActiveSheet.Hyperlinks For zki = 2 To Cells(Rows.Count, "A").End(xlUp).Row .Add Anchor:=Cells(zki, "A"), Address:=Cells(zki, "A").Value Next zki End With Call RTアイコン整理 End Sub Sub RTアイコン整理() zkDate = CDate(Sheets("アイコン整理").Range("C5").Value) '基準日付 Sheets("RT").Select Columns("A").Select Selection.ClearContents Range("A1").Select Sheets("仮シート").Select Cells.Font.Size = 11 Sheets("仮シート").Select Columns("A:E").Select Selection.ClearContents Range("A1").Select Sheets("クリック確認").Select '基準日付の三日前までのデータから「RT」シートにアイコンを並べる」 zkRows = 0 Set zkFoundCell = Range("C:C").Find(What:=Format(zkDate - 3, "yyyy/mm/dd"), LookIn:=xlValues) '日付を検索 On Error Resume Next 'エラー無視で次のステートメントに進む If zkFoundCell Is Nothing Then '日付検索の有無 zkRows = Cells(Rows.Count, 3).End(xlUp).Row Else zkFoundCell.Activate zkRows = ActiveCell.Row - 1 End If On Error GoTo 0 If zkRows > 1 Then '日付検索の有り場合実行 Range("B2" & ":G" & zkRows).Select Selection.Copy Range("A1").Select Sheets("仮シート").Select Range("A1").PasteSpecial Paste:=xlValues Application.CutCopyMode = False Columns("D:E").Select Selection.Delete Shift:=xlToLeft Range("A1").Select ActiveWorkbook.Worksheets("仮シート").Sort.SortFields.Clear ActiveWorkbook.Worksheets("仮シート").Sort.SortFields.Add Key:=Range("B1:B" & zkRows - 1 _ ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("仮シート").Sort.SortFields.Add Key:=Range("C1:C" & zkRows - 1 _ ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("仮シート").Sort.SortFields.Add Key:=Range("D1:D" & zkRows - 1 _ ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("仮シート").Sort .SetRange Range("A1:D" & zkRows - 1) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With On Error Resume Next 'エラー無視で次のステートメントに進む Sheets("当日RT").Select '画像を[仮シート]に移す Columns("A:J").Select Selection.ClearContents Range("A1").Select If ActiveSheet.Shapes.Count <> 0 Then ActiveSheet.DrawingObjects.Select Selection.Cut '切り取り Sheets("仮シート").Select Range("G1").Select ActiveSheet.Paste Application.CutCopyMode = False End If Sheets("前日RT").Select '画像を[仮シート]に移す Columns("A:J").Select Selection.ClearContents Range("A1").Select If ActiveSheet.Shapes.Count <> 0 Then ActiveSheet.DrawingObjects.Select Selection.Cut '切り取り Sheets("仮シート").Select Range("L1").Select ActiveSheet.Paste Application.CutCopyMode = False End If Sheets("RT").Select '画像を[仮シート]に移す Columns("A:J").Select Selection.ClearContents Range("A1").Select If ActiveSheet.Shapes.Count <> 0 Then ActiveSheet.DrawingObjects.Select Selection.Cut '切り取り Sheets("仮シート").Select Range("Q1").Select ActiveSheet.Paste Application.CutCopyMode = False End If On Error GoTo 0 zkDate = Day(Sheets("アイコン整理").Range("C5").Value) 'スタート日 zkDate1 = Sheets("仮シート").Range("B1").Value '画像を並べるスタート日付 Sheets("仮シート").Select Range("A1").Select zkRows = 1 zkRows1 = 2 zkColumn = 1 Sheets("RT").Range("A1").Value = zkDate Do '画像を[RT]に並べる If zkDate1 > Sheets("仮シート").Range("B" & zkRows).Value Then If zkColumn <> 1 Then zkRows1 = zkRows1 + 1 End If Sheets("RT").Cells(zkRows1, 1).Value = Day(Sheets("仮シート").Range("B" & zkRows).Value) zkRows1 = zkRows1 + 1 zkColumn = 1 End If If zkDate1 = Sheets("仮シート").Range("B" & zkRows).Value Then zkAccount = Sheets("仮シート").Range("A" & zkRows).Value On Error Resume Next 'エラー無視で次のステートメントに進む Sheets("仮シート").Select '★ Range("A1").Select ActiveSheet.Shapes(zkAccount).Select 'ない場合はエラー If Err.Number = 0 Then Selection.Name = zkAccount Selection.Cut '画像切り取り Sheets("RT").Select Cells(zkRows1, zkColumn).Select ActiveSheet.Paste Application.CutCopyMode = False If zkColumn = 10 Then zkColumn = 1 zkRows1 = zkRows1 + 1 Else zkColumn = zkColumn + 1 End If End If On Error GoTo 0 Else zkDate1 = Sheets("仮シート").Range("B" & zkRows).Value End If zkRows = zkRows + 1 Loop Until Sheets("仮シート").Range("A" & zkRows).Value = "" End If Sheets("RT").Select Range("A1").Select Sheets("仮シート").Select If ActiveSheet.Shapes.Count > 0 Then ActiveSheet.DrawingObjects.Select Selection.Delete End If Call いいねアイコン整理 End Sub Sub いいねアイコン整理() zkDate = CDate(Sheets("アイコン整理").Range("C5").Value) '基準日付 Sheets("仮シート").Select Cells.Font.Size = 11 Sheets("仮シート").Select Columns("A:E").Select Selection.ClearContents Range("A1").Select Sheets("クリック確認").Select '基準日付データから「いいね」シートにアイコンを並べる」 Range("A1").Select Selection.CurrentRegion.Select zkRowsL = Selection.Rows.Count Range("B2" & ":H" & zkRowsL).Select Selection.Copy Range("A1").Select Sheets("仮シート").Select Range("A1").PasteSpecial Paste:=xlValues Application.CutCopyMode = False Columns("B:C").Select Selection.Delete Shift:=xlToLeft Columns("D").Select Selection.Delete Shift:=xlToLeft Range("A1").Select ActiveWorkbook.Worksheets("仮シート").Sort.SortFields.Clear ActiveWorkbook.Worksheets("仮シート").Sort.SortFields.Add Key:=Range("B1:B" & zkRowsL - 1) _ , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("仮シート").Sort.SortFields.Add Key:=Range("C1:C" & zkRowsL - 1) _ , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("仮シート").Sort.SortFields.Add Key:=Range("D1:D" & zkRowsL - 1) _ , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("仮シート").Sort .SetRange Range("A1:D" & zkRowsL - 1) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With zkRows = 0 Set zkFoundCell = Range("B:B").Find(What:=Sheets("仮シート").Range("B1").Value - 1, LookIn:=xlValues) '日付を検索 On Error Resume Next 'エラー無視で次のステートメントに進む If zkFoundCell Is Nothing Then '日付検索の有無 zkRows = Cells(Rows.Count, 3).End(xlUp).Row Else zkFoundCell.Activate zkRows = ActiveCell.Row - 1 End If On Error GoTo 0 Range("A" & zkRows + 1 & ":D" & zkRowsL).Select Selection.ClearContents Range("A1").Select If zkRows > 0 Then '日付検索の有り場合実行 On Error Resume Next 'エラー無視で次のステートメントに進む Sheets("当日いいね").Select '画像を[仮シート]に移す Columns("A:J").Select Selection.ClearContents Range("A1").Select If ActiveSheet.Shapes.Count <> 0 Then ActiveSheet.DrawingObjects.Select Selection.Cut '切り取り Sheets("仮シート").Select Range("G1").Select ActiveSheet.Paste Application.CutCopyMode = False End If Sheets("前日いいね").Select '画像を[仮シート]に移す Columns("A:J").Select Selection.ClearContents Range("A1").Select If ActiveSheet.Shapes.Count <> 0 Then ActiveSheet.DrawingObjects.Select Selection.Cut '切り取り Sheets("仮シート").Select Range("L1").Select ActiveSheet.Paste Application.CutCopyMode = False End If Sheets("いいね").Select '画像を[仮シート]に移す Columns("A:J").Select Selection.ClearContents Range("A1").Select If ActiveSheet.Shapes.Count <> 0 Then ActiveSheet.DrawingObjects.Select Selection.Cut '切り取り Sheets("仮シート").Select Range("Q1").Select ActiveSheet.Paste Application.CutCopyMode = False End If On Error GoTo 0 zkDate = Day(Sheets("アイコン整理").Range("C5").Value) 'スタート日 Sheets("仮シート").Select Range("A1").Select zkRows = 1 zkRows1 = 2 zkColumn = 1 Sheets("いいね").Range("A1").Value = zkDate Do '画像を[いいね]に並べる zkAccount = Sheets("仮シート").Range("A" & zkRows).Value On Error Resume Next 'エラー無視で次のステートメントに進む Sheets("仮シート").Select '★ Range("A1").Select ActiveSheet.Shapes(zkAccount).Select 'ない場合はエラー If Err.Number = 0 Then Selection.Name = zkAccount Selection.Cut '画像切り取り Sheets("いいね").Select Cells(zkRows1, zkColumn).Select ActiveSheet.Paste Application.CutCopyMode = False If zkColumn = 10 Then zkColumn = 1 zkRows1 = zkRows1 + 1 Else zkColumn = zkColumn + 1 End If End If On Error GoTo 0 zkRows = zkRows + 1 Loop Until Sheets("仮シート").Range("A" & zkRows).Value = "" End If Sheets("いいね").Select Range("A1").Select Sheets("仮シート").Select If ActiveSheet.Shapes.Count > 0 Then ActiveSheet.DrawingObjects.Select Selection.Delete End If Sheets("仮シート").Select Columns("A:E").Select Selection.ClearContents Range("A1").Select Sheets("アイコン整理").Select Range("C5").Select MsgBox "整理まとめ完了⇒日付を変更して下さい。" Application.ScreenUpdating = True '画面更新を許可する ThisWorkbook.Save End Sub |
----------------------------------- 以上で、アイコン整理.xlsmの準備完了です 使用手順 コピーはGoogle Chromeの方がやりやすいです Tweets通知画面で説明いたします ![]() アイコン一覧を表示(左図) 2・カーソルを合わせ必要なところまで ドラックし、コピーして下さい (文字の部分が青色になります) コピーは12~15アカウントが最適です Excelではこれ以上は時間が掛かり過ぎます 又、Tweets通知画面も一度に多くは 出来ないようになっています 3・シート「アイコン整理」のセルB2の 「整理ボタン」をクリック ![]() 4・入力ダイアログ ボックスが表示 「RT」は「1」 「いいね」は「2」を入力します 「OK」をクリック ![]() 7/15は「15」日にちだけを入力します 「OK」ボタンクリックで処理が始まります シート「アイコン整理」のセルC5の整理する日付は当日シートに貼り付けられ 以外は前日シートに貼り付けます 次のコピー範囲を解りやすくしています アイコン上に「G」がある場合はその列の 上方向にシフトがミスしていますので 「G」から下方向にカーソルを移動し 日にちor空白の場合はそこに張り付ているアイコンを 「G」の上に貼り付けて下さい 6・その日の終わりに(私は22時にTweetsを閉じますのでその時にします) シート「アイコン整理」のセルD2の「整理まとめ」をクリック その日に貼り付けられたアイコンを整理します 当日・前日のアイコンは「RT」「いいね」シートに整列します 「クリック確認」シートにはクリック数を合計列に加算します 初めてにアカウトさんは自動追加されます 毎月1日には合計欄を総計欄に加算し、0に 2ヶ月以上交流のないアカウントは削除します Excel画像処理で「応答なし」になったり「固まる」場合がありますので アプリの強制終了も確認して下さい |
![]() ![]() |
![]() 小金井市発信 緯度: 35.704029 経度: 139.506367 |