Wendy02 の回答履歴
- エクセルVBAで質問です。
エクセルVBAで質問です。 不用な空白行を削除したいのですが、どのようにコードを書いたらいいでしょうか? 添付の画像のような表を作っています。 添付のではAAからGGまでデータが入っていますが、いつもデータ数は違います。ただし20行目 より多くなることはありません。データ範囲の5行目から20行目まででおさまります。 このような条件で、データのない空白行を自動で削除するようにしたいと考えています。 よろしくお願いします
- Excel2003 VBA Functionの定数に関して教えて下さい
Excel2003 VBA Functionの定数に関して教えて下さい。 例えば、 Function test(x, y) test = A * x + B * y + C End Function という数式を定義し、プログラム中で使用したいとします。 数式を見て分かる通り、xとyは変数でA, B, Cは定数です。 そして、これらA, B, Cの値を A = Cells(3,5) B = Cells(3,6) C = Cells(3,7) のようにシート上の値を使用したいのですが、 上記のようにプログラム中で宣言してもFunctionの中では値が入っていないものとみなされてしまいます。 この問題の回避のため、、 Function test(x, y) A = Cells(3,5) B = Cells(3,6) C = Cells(3,7) test = A * x + B * y + C End Function のようにFunctionの中に、定数を宣言を入れてしまうか、 Function test(x, y, A, B, C) test = A * x + B * y + C End Function のようにA, B, Cも定数ではなく、変数として扱う方法があります。 しかしながら、一つ目の方法では、こういったFunctionの数が増えてくると、 同じ定数を複数の場所で宣言することになり、後からプログラムを書き直そうとしたときに 極めて不便です。 一方で、2つめの方法では、test(x, y, A, B, C)のように、 一つのFunctionを呼び出すためにごちゃごちゃしてスペースをとり、 後から見たときに見にくくなります。 後、Constとして定義する方法もありますが、 A = Cells(3,5) のように、シート上のデータを代入する方法をとりたいと考えています。 上記以外の方法以外でもっとスマートな方法がありましたら 教えて頂けますでしょうか?
- エクセルのシートコピーで名前の重複エラー
エクセルのシートコピーで名前の重複エラー いつもお世話になっております。既出だったら申し訳ありません。 エクセルのシートをコピーしようとすると、以下のようなエラーが出ます。 「移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前○○が含まれています。この名前を使用しますか?」 そこで、「はい」を選択しても、また違う名前でエラーが出ます。 それが20回ほど続いて、やっとコピーが出来る状態です。 調べてみると、[挿入]-[名前]-[定義]から該当する名前を削除すればよいと書かれていたのですが、エラーが出る名前は全て一覧に存在しないので、削除することができません。 どのようにすればこのエラーメッセージを解消する事が出来るでしょうか。 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- pepepepepe
- 回答数1
- エクセルVBAで質問です。
エクセルVBAで質問です。 不用な空白行を削除したいのですが、どのようにコードを書いたらいいでしょうか? 添付の画像のような表を作っています。 添付のではAAからGGまでデータが入っていますが、いつもデータ数は違います。ただし20行目 より多くなることはありません。データ範囲の5行目から20行目まででおさまります。 このような条件で、データのない空白行を自動で削除するようにしたいと考えています。 よろしくお願いします
- Excel 入力して置換するマクロ
Excel 入力して置換するマクロ 同一書式で作成された表がある複数の書式シートのデータを、同一ブック内にあるデータ集約するための集約シートが「表 あ」にあります。 都合上、集約シートには表は、「表 あ」しかなく、1つの書式シートのデータのみしか表示していません。 書式シートのデータを参照する計算式内のシート名にあたる『Sheet1!』の部分を置換で他の書式シートに変えたいのですが、対象シートが複数あり上、誰でも置換をスムーズに行いたいので、インプットボックスにシート名を記載すれば置換できるマクロが作れないのか試行錯誤しております。 良い方法があればお教え下さい。
- ベストアンサー
- オフィス系ソフト
- 15daifukufuku
- 回答数6
- エクセルのVBAでプログラムを作成中です。
エクセルのVBAでプログラムを作成中です。 下二桁が1の項目のある列があれば、その列を別ワークシートの1番目の列に引用、 下二桁が2の項目のある列があれば、その列を別ワークシートの2番目の列に引用。。というように、 別ワークシートへ引用することができればな、と思います。 ポイントは、 下二桁を認識し、その値を列数と認識するにはどうすればよいか? ex) 101023がA1セルにあり。⇒ 下二桁が23なので、別ワークシートでは23列目。 application.worksheetfunction value vlookup 。。色々コードは思いつくのですが、そもそも見当違いなのかもしれません。 ご教示ください。
- 名刺のマークをトリミングできますか?
名刺のマークをトリミングできますか? 名刺に会社のマークがございます。 そのマークを、宛名ラベルの隅に載せたいと思います。 (コクヨ合わせ名人3にて) マークだけをトリミング?(切り取って)使用できるようにしたいの ですが、試行錯誤しましたが進めませんでした。 試した方法は、スキャナで名刺をスキャン、Word2007でマークだけをトリミング。 でも、この後から続きませんでした・・。(Vistaです) Wordを、「プログラムから開く」で試したところ、IEになってしまうし、もう ぐちゃぐちゃになってしまい、質問させていただきました。 ペイントを使ってみようと思いましたが、ファイルを選択すると、 「このファイルは読めません」と出てきてしまいます。 とても小さい会社なので、マークを使うことの了承は得ております。 何か良い方法はございますか? 以前、タオル屋さんに会社のマークを入れてもらう時に、名刺をPDFで送りました。 先方は、プロなのでできるのは当然なのですが、私も書類の隅や送り状などにさり げなくマークをつけたいと思っております。(素人考えですみません) ぜひ、ご教示のほどお願い致します。
- 『Windows Live』サービスの、SkyDriveに的を絞ってレ
『Windows Live』サービスの、SkyDriveに的を絞ってレビューして行きます。 http://www.design-oil.com/blog/2008/02/26/343 これを、手順通り、やってみたのですが、下記が上手く行きません。是非ご指導下さい。 まずは最低限の初期設定が、上手く行きません。 1.「最初のWindows LiveのID」の入力は、上手く行きます。 2.フォウダーの設定で、「右上のプロフィル」をクッリクすると、テキストと異なり、「パブッリク」「限定」「プライベト」の1個の選択を行い。例えば、「プライベト」を選択すると、「67%の設定完了」となり。デキストのように、「個人ファルダー」の「DESIGN ID」とか「WEB用の表示情報」が、まったく出ません。どこを、クッリクすると、かかる情報が出てくるのか??御教えください。 3.ファイルのアップロードは、まずメールの添付書類の要領で、デーダを添付すれば、いいのでしょうか?? 4.『Active X』をインストールする事で、ドラッグ&ドロップにてファイルのアップロードが可能になります。 この『Active X』をインストール自体は、具体的をキッリクすれば、どのようなるのでしょうか?? 5また、アップロード情報を相手に知らせる場合は、どのような事をして、具体的にどのように、なるか??詳しく御教えください。御願致します。なお宅ふぁいる便http://www.filesend.to/は、相手のメルアドに、サイトの運営者から、メールが届き、そのメール添付のURLをクリックするだけで、データが見られますが、 この方式はかなり、仕組み、具体的なやり方が、難しいそうなんですが、是非やり方をお教えください。 御願致します。
- ベストアンサー
- その他MS Office製品
- oosak1234
- 回答数5
- ExcelVBAで、広範囲セルの空白チェックをしたいと思います。
ExcelVBAで、広範囲セルの空白チェックをしたいと思います。 以下のようなExcelシートがあります。 ・10行目まではタイトル行 ・データ入力可能セル範囲はA11~AF65536 全てのデータ範囲を削除するために、以下のコードを作成しました。 動きとしては問題ないのですが、データが存在しない場合の 処理時間が長くなってしまいます。 Sub 全データ削除() Dim endrow As Long Dim mydelete As Integer Dim myrange As Range endrow = Range("A11").End(xlDown).Row For Each myrange In Range("A11:AF" & endrow) If myrange.Value <> "" Then GoTo 削除処理 End If Next myrange MsgBox "データがありません。" Exit Sub 削除処理: mydelete = MsgBox("全てのデータを削除しますか?", vbOKCancel) Select Case mydelete Case vbOK Rows("11:65536").Delete Range("D4").Formula = "=COUNTA(A11:A65536)" MsgBox "データを削除しました。" Exit Sub Case vbCancel MsgBox "キャンセルされました。" Exit Sub End Select End Sub データ範囲が65536行までになってしまうため時間がかかっているのだと思いますが、 回避方法がわかりません。 ご教授お願いいたします。
- ベストアンサー
- その他MS Office製品
- rose1224
- 回答数4
- マフィア用語を覚えても、やっぱり役に立つことはないでしょうか?
マフィア用語を覚えても、やっぱり役に立つことはないでしょうか? こんにちは、いつもお世話になります。 wiseguyは、英和では「生意気なやつ」としか出てこないけど、マフィア映画では「マフィアの組員」の事を指すんだよ。 とか、clipは、マフィア用語で、「殺す」の意味なんだよ、英和では出てこないけど。 等と、マフィア物のドラマを見て英語学習していると様々な辞書に載っていない意味がある英単語に出会います。 時代劇物や、他のジャンルのドラマを見ていてもこういう現象はなかなか起きないので、なにか嬉しいような気分もするのですが、やっぱり全くの不毛でしょうか?(使うことないでしょうし) よろしくお願い致します。
- ExcelVBAで、広範囲セルの空白チェックをしたいと思います。
ExcelVBAで、広範囲セルの空白チェックをしたいと思います。 以下のようなExcelシートがあります。 ・10行目まではタイトル行 ・データ入力可能セル範囲はA11~AF65536 全てのデータ範囲を削除するために、以下のコードを作成しました。 動きとしては問題ないのですが、データが存在しない場合の 処理時間が長くなってしまいます。 Sub 全データ削除() Dim endrow As Long Dim mydelete As Integer Dim myrange As Range endrow = Range("A11").End(xlDown).Row For Each myrange In Range("A11:AF" & endrow) If myrange.Value <> "" Then GoTo 削除処理 End If Next myrange MsgBox "データがありません。" Exit Sub 削除処理: mydelete = MsgBox("全てのデータを削除しますか?", vbOKCancel) Select Case mydelete Case vbOK Rows("11:65536").Delete Range("D4").Formula = "=COUNTA(A11:A65536)" MsgBox "データを削除しました。" Exit Sub Case vbCancel MsgBox "キャンセルされました。" Exit Sub End Select End Sub データ範囲が65536行までになってしまうため時間がかかっているのだと思いますが、 回避方法がわかりません。 ご教授お願いいたします。
- ベストアンサー
- その他MS Office製品
- rose1224
- 回答数4
- 『Windows Live』サービスの、SkyDriveに的を絞ってレ
『Windows Live』サービスの、SkyDriveに的を絞ってレビューして行きます。 http://www.design-oil.com/blog/2008/02/26/343 これを、手順通り、やってみたのですが、下記が上手く行きません。是非ご指導下さい。 まずは最低限の初期設定が、上手く行きません。 1.「最初のWindows LiveのID」の入力は、上手く行きます。 2.フォウダーの設定で、「右上のプロフィル」をクッリクすると、テキストと異なり、「パブッリク」「限定」「プライベト」の1個の選択を行い。例えば、「プライベト」を選択すると、「67%の設定完了」となり。デキストのように、「個人ファルダー」の「DESIGN ID」とか「WEB用の表示情報」が、まったく出ません。どこを、クッリクすると、かかる情報が出てくるのか??御教えください。 3.ファイルのアップロードは、まずメールの添付書類の要領で、デーダを添付すれば、いいのでしょうか?? 4.『Active X』をインストールする事で、ドラッグ&ドロップにてファイルのアップロードが可能になります。 この『Active X』をインストール自体は、具体的をキッリクすれば、どのようなるのでしょうか?? 5また、アップロード情報を相手に知らせる場合は、どのような事をして、具体的にどのように、なるか??詳しく御教えください。御願致します。なお宅ふぁいる便http://www.filesend.to/は、相手のメルアドに、サイトの運営者から、メールが届き、そのメール添付のURLをクリックするだけで、データが見られますが、 この方式はかなり、仕組み、具体的なやり方が、難しいそうなんですが、是非やり方をお教えください。 御願致します。
- ベストアンサー
- その他MS Office製品
- oosak1234
- 回答数5
- エクセル2003VBAにて、ppostmessageでメニューボタンを
エクセル2003VBAにて、ppostmessageでメニューボタンを押したいのですが、 メニューボタンのハンドルを取得する方法がわかりません。 SendKeys "%(F)", Trueで、他のアプリケーションを動かしていたのですが、 時々実行されないままプログラムが次へ進んでしまいます。 postmessageでメニューのファイルを押したいのですが、ハンドルの取得方法がわかりません。 どなたか教えていただけませんでしょうか。 お手数をおかけしますがどうぞよろしくお願いします。 'ボタンのハンドルを取得して押す Dim hButton As Long 'hButton = GetDlgItem(hwindow, 0) hButton = FindWindowExA(hwindow, vbNull, vbNullString, "ファイル(&F)") MsgBox hButton 'Call PostMessageA(hButton, WM_LBUTTONDOWN, MK_LBUTTON, 0) 'Call PostMessageA(hButton, WM_LBUTTONUP, MK_LBUTTON, 0) コードをどう修正すればうまくいくのでしょうか。
- EXCEL 2007 VBAによる時系列データの更新について
EXCEL 2007 VBAによる時系列データの更新について 当方初心者です。意外と簡単に解決できるものかは分かりませんが質問させて頂きます。 どなたかご教授頂ければと思います。 "A.xls"の"Sheet1"に 2010/10/4 6:00 100 101 100 101 2010/10/5 6:00 102 103 101 102 2010/10/6 6:00 103 104 100 103 2010/10/7 6:00 103 105 100 102 2010/10/8 6:00 103 105 100 102 2010/10/11 6:00 102 107 100 102 2010/10/12 6:00 102 106 100 103 というように毎日蓄積されたデータを1行ごとに保存してあります。 そして"B.xls"の"Sheet1"には 2010/10/8 6:00 103 105 100 102 2010/10/11 6:00 102 107 100 102 2010/10/12 6:00 102 106 100 103 2010/10/13 6:00 101 104 100 102 2010/10/14 6:00 100 102 100 100 2010/10/15 6:00 101 103 100 100 のように最新のデータが保存されてあり、このデータを蓄積してある データ("A.xls"の"Sheet1")にVBAによってコピーしたいのです。 ただしこの場合、既に保存してある期間のデータよりも以降 (上記例では両データ共にA列に日付データが入力されてあり、 2010/10/13 6:00以降)のデータを"A.xls"の"Sheet1"の 2010/10/12 6:00 102 106 100 103 の次の行からコピーしていきたいのですが、どのような方法で 可能なのでしょうか? まだ初心者ですがどなたか教えていただければと存じます。 宜しくお願い申し上げます。
- Excel マクロ 特定文字の抽出
Excel マクロ 特定文字の抽出 10月20日に質問させていただき、jcctaira様にご回答頂きました。 1点うまくいかない点があり、再度質問させていただきます。 お教え頂きましたマクロは下記になります。 For i = 2 To last strt = Mid(Cells(i, "A"), 6, 3) Cells(i, "B") = strt Next i End Sub 3文字が3桁の数字で例えば「001」や「022」の場合に 貼り付けたセルでは「1」や[22」になり0が表示されません。 どのように貼り付けを指定すれば3桁の数字(先頭が0のもの)が 正しく反映されますでしょうか。
- ベストアンサー
- その他MS Office製品
- hyogara777
- 回答数5
- VBAの日付チェックでオーバーフローを回避したい。
VBAの日付チェックでオーバーフローを回避したい。 ExcelのG列のセルに入力されたものが日付型であるかどうかのチェックかけたいと思います。 以下のコードだと、数字2958466以上の入力でオーバーフローが発生します。 これを回避する方法はありますか? セルを日付型に設定しているため、2958465(2999/12/31)までしか判別できないのでしょうが、 利用者が2958466以上を入力してしまう可能性はあります。 オーバーフローではなく、エラーメッセージが出せたら・・・と思います。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 8 Then Application.EnableEvents = False If Target <> "" And Not IsDate(Target) Then MsgBox "日付型で入力してください。" & vbCrLf & "(例:2010/10/31)", vbCritical, "入力エラー" Target = "" Target.Select End If Application.EnableEvents = True End If End Sub こんなコードも試しましたが、結果は同じでした。 ↓ Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 8 Then Application.EnableEvents = False If Target > 2958466 Then MsgBox "日付型で入力してください。" & vbCrLf & "(例:2010/10/31)", vbCritical, "入力エラー" Target = "" Target.Select Else If Target <> "" And Not IsDate(Target) Then MsgBox "日付型で入力してください。" & vbCrLf & "(例:2010/10/31)", vbCritical, "入力エラー" Target = "" Target.Select End If End If Application.EnableEvents = True End If End Sub On Error Resume Next や On Error GoTo ... での対処も考えましたが、同じ結果でした。 何か良い方法がありましたら、お願いいたします。
- Excel マクロ 特定文字の抽出
Excel マクロ 特定文字の抽出 10月20日に質問させていただき、jcctaira様にご回答頂きました。 1点うまくいかない点があり、再度質問させていただきます。 お教え頂きましたマクロは下記になります。 For i = 2 To last strt = Mid(Cells(i, "A"), 6, 3) Cells(i, "B") = strt Next i End Sub 3文字が3桁の数字で例えば「001」や「022」の場合に 貼り付けたセルでは「1」や[22」になり0が表示されません。 どのように貼り付けを指定すれば3桁の数字(先頭が0のもの)が 正しく反映されますでしょうか。
- ベストアンサー
- その他MS Office製品
- hyogara777
- 回答数5
- エクセルのあるセルに常に自動更新される値があります。これを
エクセルのあるセルに常に自動更新される値があります。これを そのセルの数字が変化するごとに自動で特定の列に順に出力していきたいのですが? そのような方法はありますか? 自動更新されている値は外部のアプリから取り込んだものです
- 「なの子の狙い撃ち」のようなソフトは他にありますか?
「なの子の狙い撃ち」のようなソフトは他にありますか? できれば、エクセルやワードのアドインであればいいのですが
- ベストアンサー
- その他MS Office製品
- noname#150307
- 回答数1
- VBAの入力規則について質問です。
VBAの入力規則について質問です。 Excelで、D列は全角50文字(半角100文字)以内の入力を可能とし、 それ以上の入力の場合、エラーを表示させたいと思います。 全角と半角をバイト数で判別し、以下のようなコードを考えましたが、 全角の場合しかうまくできません。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ByteCount As Long ByteCount = LenB(StrConv(Target, vbFromUnicode)) If Target.Column = 4 Then Select Case ByteCount Case Is > 100 With Target.Validation .Add _ Type:=xlValidateTextLength, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=1, Formula2:=100 .ErrorTitle = "入力エラー" .ErrorMessage = "全角50文字(半角100文字)以内で入力してください。" .IgnoreBlank = False End With Case 1 To 100 With Target.Validation .Add _ Type:=xlValidateTextLength, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=1, Formula2:=50 .ErrorTitle = "入力エラー" .ErrorMessage = "全角50文字(半角100文字)以内で入力してください。" .IgnoreBlank = False End With End Select End If End Sub アドバイスをよろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- rose1224
- 回答数3