VBAを使用してテキストボックス内のフォントを統一するプログラムを書きました。
でも同じシート内でもテキストBOXと認識してフォントを変更してくれるときと、
テキストBOXと認識しなくてフォントを変更してくれないときがあります。
何故でしょうか?分かる方教えてください。
プログラムは以下のよう書きました。
---------------
Dim tbx As TextBox
For Each tbx In ActiveSheet.TextBoxes
tbx.Font.Name = "MS 明朝"
Next
---------------
これまでエクセル2003を使っていました。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox "印刷指示されました。"
End Sub
このコードで、PrintでもPrintPreviewでもイベントが発生しました。
ところが、今エクセル2010でためしたところ、Previewではイベントが発生しません。印刷を指示しないかぎり発生しないようです。
では、新たにBeforePrintPreview?ができたのかと思いましたが見当たりません。
2010でPrintPreviewでイベントを発生させる方法はありますか?
あるいは2003で、PrintとPrintPreviewのイベントを別に取得する方法はありますか?
教えてください。
これまでエクセル2003を使っていました。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox "印刷指示されました。"
End Sub
このコードで、PrintでもPrintPreviewでもイベントが発生しました。
ところが、今エクセル2010でためしたところ、Previewではイベントが発生しません。印刷を指示しないかぎり発生しないようです。
では、新たにBeforePrintPreview?ができたのかと思いましたが見当たりません。
2010でPrintPreviewでイベントを発生させる方法はありますか?
あるいは2003で、PrintとPrintPreviewのイベントを別に取得する方法はありますか?
教えてください。
arrayの使い方についてご教授をお願いします。
以下の記述はワークシートが3枚あり、それぞれの最終行を調べ、arrayに読み込んでいます。いつもは変数を3つ設定しシート毎に各変数にセットしているのですが、以下の簡単な記述を知る機会があり勉強をしています。なぜ各シートをループし、その都度ちゃんと最終行を読込んでいるのか教えて頂きたいと思います。
また他のホームページで解説等を見ると、最初からarrayの( )の中に複数の文字等が並んでおり、それを取出す使い方が書いてありますが、このように検索結果をarrayに読込む場合の( )の中は0を入れて置けばよいのでしょうか?
初心者のため、わかりずらい文で申し訳ありません。エクセル2000を使用しています。
Sub kk()
Dim lastrow As Variant
lastrow = Array(0, 0, 0, 0, 0)
For m = 1 To 3
n = 1
Do While Sheets(m).Cells(n, 1) <> ""
n = n + 1
Loop
MsgBox n - 1
lastrow(m) = n - 1
Next
End Sub
最終行の取得方法は他にもある事は理解しています。よろしくお願いします。
エクセル2003です。
ThisWorkbookには以下の記述があります。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> "Sheet1" Then Exit Sub
If Range("A1").Value = "" Then
MsgBox "A1が未入力です"
Range("A1").Select
Cancel = True
End If
Application.OnTime Now(), "ページ移動"
End Sub
標準モジュールには以下の記述があります。
Sub ページ移動()
Sheets("Sheet2").Select
Range("A1").Select
End Sub
Sub プリント()
ActiveWindow.SelectedSheets.PrintPreview
End Sub
これでSheet1を開いた状態でツールバーから印刷プレビュー指示をすると、A1セルが入力済みであればプレビュー画面を出し、プレビューを閉じればSheet2が表示されます。
ところが、同じ状態でツールバーからではなく、マクロ Sub プリント を実行すると、プレビュー画面にはなりますが、プレビューを閉じてもSheet1のままです。
なぜ、
Application.OnTime Now(), "ページ移動"
が、有効にならないのでしょうか?
エクセルのセル範囲(結合セル)にいろいろな名前を定義してあります。
名前の定義されたセル範囲を変更した場合、マクロが動くようにしたいのです。
ところが、名前の定義のないセルを変更すると
「実行時エラー1004、アプリケーション定義またはオブジェクトの定義のエラーです」
になってしまいます。
一応、下記のような方法で解決はできましたが、エラーで判断するのではなく、名前の定義の有無を取得して分岐させるのが正しい?やりかたなのではと思います。
ご教示いただけましたら幸いです。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As String
On Error Resume Next
x = Target.Cells(1).Name.Name
On Error GoTo 0
If x = "" Then Exit Sub
Select Case Target.Cells(1).Name.Name
Case "住所"
Range("送付先住所").Value = Target.Value
Case "氏名"
Range("送付先氏名").Value = Target.Value
End Select
End Sub
VBAのUserformのボタンを押すことによってwebクエリを取得という形を希望しているのですが、
以下のようにコードを設定した場合、Button1をクリックしただけではずっと”取得中”という文字が表示されるだけで何も動きはありません。
そこで、フォーム自体を×ボタンで消すと、その直後にwebクエリのデータが指定のシートに反映されます。
Private Sub CommandButton1_Click()
'Webクエリ作成
'WebSelectionType = xlAllTables
With ActiveSheet.QueryTables.Add( _
Connection:="URL;http://www.yahoo.co.jp", _
Destination:=Worksheets("abc").Cells(1, 1))
.WebSelectionType = xlAllTables '既定値
.Refresh
End With
End Sub
なぜフォームを消さないとシートに反映されないのでしょうか?
ボタンを押すだけで即座に反映され、その後も作業を続けられるようにしたいので、方法を教えてください。
よろしくお願いします。