エクセル2000です。
Sheet1を複製し名前をつけて保存するマクロを書きました。
以下のとおりですが、キャンセルされた場合でも「保存しました」のメッセージが出てしまいます。
キャンセルされたことを取得するにはどう書けばいいでしょうか?
Sub tesy01()
Dim ns As Workbook
Dim fn As String
Sheets("Sheet1").Copy
Set ns = ActiveWorkbook
With ns.Sheets(1)
.Cells.Copy
.Cells.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
fn = .Range("A1") & Format(Date, "yymmdd")
End With
Application.Dialogs(xlDialogSaveAs).Show ARG1:=fn & ".xls", ARG2:=1
ns.Close (False)
Set ns = Nothing
MsgBox "保存しました。"
ThisWorkbook.Activate
Sheets("Sheet1").Activate
End Sub
こんばんは
VBAの勉強をはじめたばかりの素人です。
いろいろ調べたのですが自分の学習不足もあってかなかなか
回答に結びつかなかったので質問させてください。
シートの("A:A")をダブルクリックしたらフォーム1を表示する
シートの("B:B")をダブルクリックしたらフォーム2を表示する
シートの("C:C")をダブルクリックしたらフォーム3を表示する
といった簡単なイベントなのですがうまくできません。
'-----------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Address = ("A:A") Then
1.Show
ElseIf ActiveCell.Address = ("B:B") Then
2.Show
ElseIf ActiveCell.Address = ("C:C") Then
3.Show
End If
End Sub
'-----------------------------------------------
又は
'-----------------------------------------------
Private Sub Workbook_Open()
ActiveWorkbook.Worksheets("Sheet1").OnDoubleClick = "Test"
End Sub
Public Sub Test()
A列 = 1
B列 = 2
C列 = 3
現在位置列 = ActiveCell.Column
現在位置行 = ActiveCell.Row
Select Case ActiveCell.Address
Case 現在位置列 = A列
1.Show
Case 現在位置列 = B列
2.Show
Case 現在位置列 = C列
3.Show
End Select
End Sub
'-----------------------------------------------
などがが今の私ができる最大限の内容ですが、全く違うようです。
素人質問で大変申し訳ありません。
勘違いが多々あるかもしれませんが教えてください。
以上宜しくお願いいたします。
エクセル2000のVBAで質問します。
A1セルにVLOOKUP関数で文字列が表示されます。
セルの書式設定で「折り返して全体を表示する」にした場合、セル内で折り返されて全部で何行になっているのかを取得する方法はありますか?(VBAでも関数でも)
現在、セルの高さを3行分とっているのですが、関数で表示される文字列の長さによっては3行でおさまらない場合があり、何行になるかがわかれば行数に応じてフォントサイズを変更し、縮小して全体を表示させようと思っています。
当初、セルからはみ出るかどうかがわかれば出来るかと思い、
Sub test01()
With Worksheets("Sheet1").Range("A1")
h = .Height
.Value = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
.WrapText = True
.EntireRow.AutoFit
h2 = .Height
.EntireRow.RowHeight = h
End With
If h2 > h Then
MsgBox "はみ出しちゃった!", , " \(≧▽≦)丿"
End If
End Sub
というマクロを書いてみたのですが、行数がわからないと縮小する割合が求められないので質問いたしました。
VBA初心者です。いろいろと調べて見ましたが、「C列からアクティブセルの前列までを削除」する方法が分かりません。下の記述は「C列からX列」としていますが、X→「アクティブセルの前列」と読み替えるにはどうすればよろしいでしょうか。よろしくご指導下さい。
Sub 列削除()
Columns("C:X").Select
Selection.Delete Shift:=xlToLeft
End Sub